home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / unix / volume24 / psroff3.0 / part06 < prev    next >
Encoding:
Internet Message Format  |  1991-10-09  |  55.3 KB

  1. Subject:  v24i101:  psroff, Troff to PostScript filter, Part06/19
  2. Newsgroups: comp.sources.unix
  3. Approved: rsalz@uunet.UU.NET
  4.  
  5. Submitted-by: Chris Lewis <latour!ecicrl!clewis@uunet.uu.net>
  6. Posting-number: Volume 24, Issue 101
  7. Archive-name: psroff3.o/part06
  8.  
  9. #! /bin/sh
  10. # This is a shell archive.  Remove anything before this line, then feed it
  11. # into a shell via "sh file" or similar.  To overwrite existing files,
  12. # type "sh file -c".
  13. # The tool that generated this appeared in the comp.sources.unix newsgroup;
  14. # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
  15. # Contents:  dt.c fonts.lj/S.16.pk.UU fonts.lj/S.24.pk.UU
  16. #   man/pk2sfp.1.S
  17. # Wrapped by clewis@ecicrl on Fri Apr  5 20:55:59 1991
  18. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  19. echo If this archive is complete, you will see the following message:
  20. echo '          "shar: End of archive 6 (of 19)."'
  21. if test -f 'dt.c' -a "${1}" != "-c" ; then 
  22.   echo shar: Will not clobber existing file \"'dt.c'\"
  23. else
  24.   echo shar: Extracting \"'dt.c'\" \(13519 characters\)
  25.   sed "s/^X//" >'dt.c' <<'END_OF_FILE'
  26. X/*
  27. X    Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991 Chris Lewis
  28. X        All Rights Reserved
  29. X
  30. X    See the LICENSE file for a full description of restrictions under which
  31. X    this software is provided.
  32. X
  33. X    Function:        Ditroff driver
  34. X */
  35. X
  36. X#include "defs.h"
  37. X
  38. X#ifndef    lint
  39. Xstatic char SCCSid[] =
  40. X    "@(#)dt.c: 2.6 Copyright 91/03/10 03:12:46 Chris Lewis";
  41. X#endif
  42. X
  43. X/*    These two tables are always included so that we have the
  44. X    official character mapping tables.
  45. X */
  46. X
  47. Xstruct troff2befont dtStdFont[108] = {
  48. X
  49. X/*    Note on X-shift, Y-shift and point scale factor:
  50. X    The first two are shifts in the baseline position of the
  51. X    character, and the third is a multiplier of the point size.
  52. X    If they are zero, nothing happens.  If they are non-zero,
  53. X    they are first multiplied by .01, then (in the case of the
  54. X    shifts), multiplied by the current points to get a shift
  55. X    value in TROFF2PS[XY] coordinates.  In the case of point scale
  56. X    factor, it is multiplied by <currentpointsize> * .01 and becomes
  57. X    the pointsize of the sequence to be emitted.
  58. X */
  59. X/*          +-------------------------------- Troff character number
  60. X        |
  61. X            |    +--------------------------- N: standard fonts
  62. X            |    |                            S: symbol font
  63. X            |    |                            D: draw macro
  64. X            |    |                            n: new font
  65. X            |    |
  66. X            |    |  +------------------------ X-shift (scaled by point)
  67. X            |    |  |                         Note: positive is right.
  68. X            |    |  |
  69. X            |    |  |  +--------------------- Y-shift (scaled by point)
  70. X            |    |  |  |                      Note: positive is up.
  71. X            |    |  |  |
  72. X            |    |  |  |  +------------------ Point scale factor
  73. X            |    |  |  |  |
  74. X            |    |  |  |  |   +-------------- Sequence
  75. X            |    |  |  |  |   |
  76. X            v    v  v  v  v   v */
  77. X    /*  0*/    {N, 0, 0, 0, "h"},
  78. X    /*  1*/    {N, 0, 0, 0, "t"},
  79. X    /*  2*/    {N, 0, 0, 0, "n"},
  80. X    /*  3*/    {N, 0, 0, 0, "m"},
  81. X    /*  4*/    {N, 0, 0, 0, "l"},
  82. X    /*  5*/    {N, 0, 0, 0, "i"},
  83. X    /*  6*/    {N, 0, 0, 0, "z"},
  84. X    /*  7*/    {N, 0, 0, 0, "s"},
  85. X    /*  8*/    {N, 0, 0, 0, "d"},
  86. X    /*  9*/    {N, 0, 0, 0, "b"},
  87. X    /* 10*/    {N, 0, 0, 0, "x"},
  88. X    /* 11*/    {N, 0, 0, 0, "f"},
  89. X    /* 12*/    {N, 0, 0, 0, "j"},
  90. X    /* 13*/    {N, 0, 0, 0, "u"},
  91. X    /* 14*/    {N, 0, 0, 0, "k"},
  92. X    /* 15*/    {N, 0, 0, 0, NOC},
  93. X    /* 16*/    {N, 0, 0, 0, "p"},
  94. X    /* 17*/    {N, 0, 0, 0, "em"},
  95. X    /* 18*/    {N, 0, 0, 0, ";"},
  96. X    /* 19*/    {N, 0, 0, 0, NOC},
  97. X    /* 20*/    {N, 0, 0, 0, "a"},
  98. X    /* 21*/    {N, 0, 0, 0, "ru"},
  99. X    /* 22*/    {N, 0, 0, 0, "c"},
  100. X    /* 23*/    {N, 0, 0, 0, "`"},
  101. X    /* 24*/    {N, 0, 0, 0, "e"},
  102. X    /* 25*/    {N, 0, 0, 0, "'"},
  103. X    /* 26*/    {N, 0, 0, 0, "o"},
  104. X    /* 27*/    {N, 0, 0, 0, "14"},
  105. X    /* 28*/    {N, 0, 0, 0, "r"},
  106. X    /* 29*/    {N, 0, 0, 0, "12"},
  107. X    /* 30*/    {N, 0, 0, 0, "v"},
  108. X    /* 31*/    {N, 0, 0, 0, "hy"},
  109. X    /* 32*/    {N, 0, 0, 0, "w"},
  110. X    /* 33*/    {N, 0, 0, 0, "q"},
  111. X    /* 34*/    {N, 0, 0, 0, "/"},
  112. X    /* 35*/    {N, 0, 0, 0, "."},
  113. X    /* 36*/    {N, 0, 0, 0, "g"},
  114. X    /* 37*/    {N, 0, 0, 0, "34"},
  115. X    /* 38*/    {N, 0, 0, 0, ","},
  116. X    /* 39*/    {N, 0, 0, 0, "&"},
  117. X    /* 40*/    {N, 0, 0, 0, "y"},
  118. X    /* 41*/    {N, 0, 0, 0, NOC},
  119. X    /* 42*/    {N, 0, 0, 0, "%"},
  120. X    /* 43*/    {N, 0, 0, 0, NOC},
  121. X    /* 44*/    {N, 0, 0, 0, "Q"},
  122. X    /* 45*/    {N, 0, 0, 0, "T"},
  123. X    /* 46*/    {N, 0, 0, 0, "O"},
  124. X    /* 47*/    {N, 0, 0, 0, "H"},
  125. X    /* 48*/    {N, 0, 0, 0, "N"},
  126. X    /* 49*/    {N, 0, 0, 0, "M"},
  127. X    /* 50*/    {N, 0, 0, 0, "L"},
  128. X    /* 51*/    {N, 0, 0, 0, "R"},
  129. X    /* 52*/    {N, 0, 0, 0, "G"},
  130. X    /* 53*/    {N, 0, 0, 0, "I"},
  131. X    /* 54*/    {N, 0, 0, 0, "P"},
  132. X    /* 55*/    {N, 0, 0, 0, "C"},
  133. X    /* 56*/    {N, 0, 0, 0, "V"},
  134. X    /* 57*/    {N, 0, 0, 0, "E"},
  135. X    /* 58*/    {N, 0, 0, 0, "Z"},
  136. X    /* 59*/    {N, 0, 0, 0, "D"},
  137. X    /* 60*/    {N, 0, 0, 0, "B"},
  138. X    /* 61*/    {N, 0, 0, 0, "S"},
  139. X    /* 62*/    {N, 0, 0, 0, "Y"},
  140. X    /*from here on are actually code 1-45, upper half of font */
  141. X    /* 63*/    {N, 0, 0, 0, "F"},
  142. X    /* 64*/    {N, 0, 0, 0, "X"},
  143. X    /* 65*/    {N, 0, 0, 0, "A"},
  144. X    /* 66*/    {N, 0, 0, 0, "W"},
  145. X    /* 67*/    {N, 0, 0, 0, "J"},
  146. X    /* 68*/    {N, 0, 0, 0, "U"},
  147. X    /* 69*/    {N, 0, 0, 0, "K"},
  148. X    /* 70*/    {N, 0, 0, 0, "0"},
  149. X    /* 71*/    {N, 0, 0, 0, "1"},
  150. X    /* 72*/    {N, 0, 0, 0, "2"},
  151. X    /* 73*/    {N, 0, 0, 0, "3"},
  152. X    /* 74*/    {N, 0, 0, 0, "4"},
  153. X    /* 75*/    {N, 0, 0, 0, "5"},
  154. X    /* 76*/    {N, 0, 0, 0, "6"},
  155. X    /* 77*/    {N, 0, 0, 0, "7"},
  156. X    /* 78*/    {N, 0, 0, 0, "8"},
  157. X    /* 79*/    {N, 0, 0, 0, "9"},
  158. X    /* 80*/    {N, 0, 0, 0, "*"},
  159. X    /* 81*/    {N, 0, 0, 0, "-"},
  160. X    /* 82*/    {N, 0, 0, 0, "fi"},
  161. X    /* 83*/    {N, 0, 0, 0, "fl"},
  162. X    /* 84*/    {N, 0, 0, 0, "ff"},
  163. X    /* 85*/    {N, 0, 0, 0, "ct"},
  164. X    /* 86*/    {N, 0, 0, 0, "Fl"},
  165. X    /* 87*/    {N, 0, 0, 0, "Fi"},
  166. X    /* 88*/    {N, 0, 0, 0, "("},
  167. X    /* 89*/    {N, 0, 0, 0, ")"},
  168. X    /* 90*/    {N, 0, 0, 0, "["},
  169. X    /* 91*/    {N, 0, 0, 0, "]"},
  170. X    /* 92*/    {N, 0, 0, 0, "de"},
  171. X    /* 93*/    {N, 0, 0, 0, "dg"},
  172. X    /* 94*/    {N, 0, 0, 0, "="},
  173. X    /* 95*/    {N, 0, 0, 0, "rg"},
  174. X    /* 96*/    {N, 0, 0, 0, ":"},
  175. X    /* 97*/    {N, 0, 0, 0, "+"},
  176. X    /* 98*/    {N, 0, 0, 0, NOC},
  177. X    /* 99*/    {N, 0, 0, 0, "!"},
  178. X    /*100*/    {N, 0, 0, 0, "bu"},
  179. X    /*101*/    {N, 0, 0, 0, "?"},
  180. X    /*102*/    {N, 0, 0, 0, "fm"},
  181. X    /*103*/    {N, 0, 0, 0, "|"},
  182. X    /*104*/    {N, 0, 0, 0, NOC},
  183. X    /*105*/    {N, 0, 0, 0, "co"},
  184. X    /*106*/    {N, 0, 0, 0, "sq"},
  185. X    /*107*/    {N, 0, 0, 0, "$"}
  186. X};
  187. X
  188. Xstruct troff2befont dtSymFont[] = {
  189. X/*          +-------------------------------- Troff character number
  190. X        |
  191. X            |    +--------------------------- N: standard fonts
  192. X            |    |                            S: symbol font
  193. X            |    |                            D: draw macro
  194. X            |    |
  195. X            |    |  +------------------------ X-shift (scaled by point)
  196. X            |    |  |                         Note: positive is right.
  197. X            |    |  |
  198. X            |    |  |  +--------------------- Y-shift (scaled by point)
  199. X            |    |  |  |                      Note: positive is up.
  200. X            |    |  |  |
  201. X            |    |  |  |  +------------------ Point scale factor
  202. X            |    |  |  |  |
  203. X            |    |  |  |  |   +-------------- Sequence
  204. X            |    |  |  |  |   |
  205. X            |    |  |  |  |   |
  206. X            v    v  v  v  v   v */
  207. X    /*  0*/    {S, 0, 0, 0, "*q"},
  208. X    /*  1*/    {S, 0, 0, 0, "*h"},
  209. X    /*  2*/    {S, 0, 0, 0, "*n"},
  210. X    /*  3*/    {S, 0, 0, 0, "*m"},
  211. X    /*  4*/    {S, 0, 0, 0, "*l"},
  212. X    /*  5*/    {S, 0, 0, 0, "*i"},
  213. X    /*  6*/    {S, 0, 0, 0, "*z"},
  214. X    /*  7*/    {S, 0, 0, 0, "*s"},
  215. X    /*  8*/    {S, 0, 0, 0, "*d"},
  216. X    /*  9*/    {S, 0, 0, 0, "*b"},
  217. X    /* 10*/    {S, 0, 0, 0, "*c"},
  218. X    /* 11*/    {S, 0, 0, 0, "*y"},
  219. X    /* 12*/    {S, 0, 0, 0, "*f"},
  220. X    /* 13*/    {S, 0, 0, 0, "*u"},
  221. X    /* 14*/    {S, 0, 0, 0, "*k"},
  222. X    /* 15*/    {S, 0, 0, 0, NOC},
  223. X    /* 16*/    {S, 0, 0, 0, "*p"},
  224. X    /* 17*/    {S, 0, 0, 0, "@"},
  225. X    /* 18*/    {S, 0, 0, 0, "da"},
  226. X    /* 19*/    {S, 0, 0, 0, NOC},
  227. X    /* 20*/    {S, 0, 0, 0, "*a"},
  228. X    /* 21*/    {S, 0, 0, 0, "or"},
  229. X    /* 22*/    {S, 0, 0, 0, "*x"},
  230. X    /* 23*/    {N, 0, 0, 0, "\""},
  231. X    /* 24*/    {S, 0, 0, 0, "*e"},
  232. X    /* 25*/    {S, 0, 0, 0, "eq"},
  233. X    /* 26*/    {S, 0, 0, 0, "*o"},
  234. X    /* 27*/    {S, 0, 0, 0, "<-"},
  235. X    /* 28*/    {S, 0, 0, 0, "*r"},
  236. X    /* 29*/    {S, 0, 0, 0, "ua"},
  237. X    /* 30*/    {S, 0, 0, 0, "*t"},
  238. X    /* 31*/    {S, 0, 0, 0, "ul"},
  239. X    /* 32*/    {N, 0, 0, 0, "\\"},
  240. X    /* 33*/    {S, 0, 0, 0, "*Q"},
  241. X    /* 34*/    {S, 0, 0, 0, "bs"},
  242. X    /* 35*/    {S, 0, 0, 0, "if"},
  243. X    /* 36*/    {S, 0, 0, 0, "*g"},
  244. X    /* 37*/    {S, 0, 0, 0, "ip"},
  245. X    /* 38*/    {S, 0, 0, 0, "pt"},
  246. X    /* 39*/    {S, 0, 0, 0, "rh"},
  247. X    /* 40*/    {S, 0, 0, 0, "*w"},
  248. X    /* 41*/    {S, 0, 0, 0, NOC},
  249. X    /* 42*/    {S, 0, 0, 0, "gr"},
  250. X    /* 43*/    {S, 0, 0, 0, NOC},
  251. X    /* 44*/    {S, 0, 0, 0, "*F"},
  252. X    /* 45*/    {S, 0, 0, 0, "*H"},
  253. X    /* 46*/    {S, 0, 0, 0, "*W"},
  254. X    /* 47*/    {S, 0, 0, 0, "cu"},
  255. X    /* 48*/    {S, 0, 0, 0, "rn"},
  256. X    /* 49*/    {S, 0, 0, 0, "ts"},
  257. X    /* 50*/    {S, 0, 0, 0, "*L"},
  258. X    /* 51*/    {S, 0, 0, 0, "mi"},
  259. X    /* 52*/    {S, 0, 0, 0, "*G"},
  260. X    /* 53*/    {S, 0, 0, 0, "is"},
  261. X    /* 54*/    {S, 0, 0, 0, "*P"},
  262. X    /* 55*/    {S, 0, 0, 0, "sb"},
  263. X    /* 56*/    {S, 0, 0, 0, "sp"},
  264. X    /* 57*/    {S, 0, 0, 0, "ap"},
  265. X    /* 58*/    {S, 0, 0, 0, "pd"},
  266. X    /* 59*/    {S, 0, 0, 0, "*D"},
  267. X    /* 60*/    {S, 0, 0, 0, "sr"},
  268. X    /* 61*/    {S, 0, 0, 0, "*S"},
  269. X    /* 62*/    {S, 0, 0, 0, "~="},
  270. X    /* 63*/    {S, 0, 0, 0, ">"},
  271. X    /* 64*/    {S, 0, 0, 0, "*C"},
  272. X    /* 65*/    {S, 0, 0, 0, "<"},
  273. X    /* 66*/    {S, 0, 0, 0, "/"},
  274. X    /* 67*/    {S, 0, 0, 0, "ca"},
  275. X    /* 68*/    {S, 0, 0, 0, "*U"},
  276. X    /* 69*/    {S, 0, 0, 0, "no"},
  277. X    /* 70*/    {S, 0, 0, 0, "rc"},
  278. X    /* 71*/    {S, 0, 0, 0, "lt"},
  279. X    /* 72*/    {S, 0, 0, 0, "bv"},
  280. X    /* 73*/    {S, 0, 0, 0, "lk"},
  281. X    /* 74*/    {S, 0, 0, 0, "lb"},
  282. X    /* 75*/    {S, 0, 0, 0, "rt"},
  283. X    /* 76*/    {S, 0, 0, 0, "rk"},
  284. X    /* 77*/    {S, 0, 0, 0, "rb"},
  285. X    /* 78*/    {S, 0, 0, 0, "rf"},
  286. X    /* 79*/    {S, 0, 0, 0, "lf"},
  287. X    /* 80*/    {S, 0, 0, 0, "lc"},
  288. X    /* 81*/    {S, 0, 0, 0, "mu"},
  289. X    /* 82*/    {S, 0, 0, 0, "di"},
  290. X    /* 83*/    {S, 0, 0, 0, "+-"},
  291. X    /* 84*/    {S, 0, 0, 0, "<="},
  292. X    /* 85*/    {S, 0, 0, 0, ">="},
  293. X    /* 86*/    {S, 0, 0, 0, "=="},
  294. X    /* 87*/    {S, 0, 0, 0, "!="},
  295. X    /* 88*/    {S, 0, 0, 0, "{"},
  296. X    /* 89*/    {S, 0, 0, 0, "}"},
  297. X    /* 90*/    {N, 0, 0, 0, "aa"},
  298. X    /* 91*/    {N, 0, 0, 0, "ga"},
  299. X    /* 92*/    {S, 0, 0, 0, "^"},
  300. X    /* 93*/    {S, 0, 0, 0, "#"},
  301. X    /* 94*/    {S, 0, 0, 0, "lh"},
  302. X    /* 95*/    {S, 0, 0, 0, "mo"},
  303. X    /* 96*/    {N, 0, 0, 0, "~"},
  304. X    /* 97*/    {S, 0, 0, 0, "es"},
  305. X    /* 98*/    {S, 0, 0, 0, NOC},
  306. X    /* 99*/    {N, 0, 0, 0, "dd"},
  307. X    /*100*/    {S, 0, 0, 0, "br"},
  308. X    /*101*/    {S, 0, 0, 0, "**"},
  309. X    /*102*/    {S, 0, 0, 0, "ib"},
  310. X    /*103*/    {S, 0, 0, 0, "ci"},
  311. X    /*104*/    {S, 0, 0, 0, NOC},
  312. X    /*105*/    {S, 0, 0, 0, "pl"},
  313. X    /*106*/    {S, 0, 0, 0, "->"},
  314. X    /*107*/    {N, 0, 0, 0, "sc"}
  315. X};
  316. X
  317. X#ifdef    DT
  318. X#include "dt.h"
  319. X
  320. X#define    USED    01
  321. X
  322. Xint dtresolution = DTRESOLUTION;
  323. X
  324. XdtPage() {
  325. X    pagePending = 1;
  326. X}
  327. X
  328. Xstatic
  329. XdoPageStart() {
  330. X    currentPage++;
  331. X    pagePending = 0;
  332. X    printf("p%d\n", currentPage);
  333. X}
  334. X
  335. X
  336. XdtSetFont(font, points)
  337. Xint font, points; {
  338. X    if (lastPoints != points || font != lastFont) {
  339. X    if (!(fonttable[font].flags)&USED)
  340. X        printf("x font %d %s\n", font+1, fonttable[font].troffName);
  341. X    fonttable[font].flags |= USED;
  342. X    printf("f%d\n", font+1);
  343. X    printf("s%d\n", points);
  344. X    lastPoints = points;
  345. X    lastFont = font;
  346. X    }
  347. X}
  348. X
  349. XdtChar(x, y, font, points, troffChar, sequence)
  350. Xlong x, y;
  351. Xint font, points, troffChar;
  352. Xchar *sequence; {
  353. X    register int nx = TROFF2DTX(x), ny = TROFF2DTY(y);
  354. X    register struct troff2befont *rp;
  355. X    if (pagePending) {
  356. X    resetState();
  357. X    doPageStart();
  358. X    }
  359. X
  360. X    DBP((D_BEND,"x,y=%d,%d; font=%d, points=%d, tc=%d\n",
  361. X    x, y, font, points, troffChar));
  362. X
  363. X    if (font < 0) {
  364. X    font = -font-1;
  365. X    rp = &extchars[troffChar];
  366. X    } else if (font == symidx)
  367. X    rp = &be->besymfont[troffChar];
  368. X    else
  369. X    rp = &be->bestdfont[troffChar];
  370. X
  371. X    switch(rp->t2b_font) {
  372. X    /* Only fonts with "N" are subject to font translation */
  373. X    case N:
  374. X        if (font == symidx)
  375. X        font = 0;    /* Special chars are Courier */
  376. X        else {
  377. X        DBP((D_BEND, "dtSetChar %d->%s (%s)\n", font,
  378. X            xlatetable[font]->troffName,
  379. X            xlatetable[font]->fontName));
  380. X        font = xlatetable[font] - fonttable;
  381. X        }
  382. X        break;
  383. X    case S:
  384. X        font = 3;
  385. X        break;
  386. X    case D:
  387. X        break;
  388. X    default:
  389. X    /* Typically used when the R and S fonts don't have the
  390. X       character desired, so select the font via the index
  391. X       in the fonts.?? file */
  392. X        font = rp->t2b_font;
  393. X        break;
  394. X    }
  395. X
  396. X    if (!sequence)
  397. X    sequence = rp->t2b_charseq;
  398. X
  399. X    if (!sequence) {
  400. X    fprintf(stderr, "No coding for %d\n", troffChar);
  401. X    return;
  402. X    }
  403. X
  404. X    /*    We're committed now - the "if" statements avoid floating
  405. X    arithmetic on slow machines */
  406. X
  407. X    if (rp->t2b_scale) points *= (.01 * rp->t2b_scale);
  408. X    if (rp->t2b_xc) nx += points * (.01 * rp->t2b_xc);
  409. X    if (rp->t2b_yc) ny += points * (.01 * rp->t2b_yc);
  410. X
  411. X    dtSetFont(font, points);
  412. X#ifdef    NOTYET
  413. X    if (rp->t2b_font == D)
  414. X    printf("H%d\nV%d\nc%s\n", nx, ny, sequence);
  415. X    else {
  416. X#endif
  417. X    /* print an nnc sequence if we can...may even be able to avoid
  418. X       the newline. */
  419. X
  420. X    if (lastYPos == ny &&
  421. X        sequence[1] == 0 &&
  422. X        lastXPos != -1 &&
  423. X        (nx - lastXPos) > 0 && (nx - lastXPos) < 100) {
  424. X
  425. X        printf("%02d%c\n",(nx - lastXPos), sequence[0]);
  426. X
  427. X    } else {
  428. X
  429. X        printf("H%d\n", nx);
  430. X
  431. X        if (lastYPos != ny) {
  432. X        printf("V%d\n", ny);
  433. X        lastYPos = ny;
  434. X        }
  435. X        if (sequence[1])
  436. X        printf("C%s\n", sequence);
  437. X        else
  438. X        printf("c%s\n", sequence);
  439. X    }
  440. X    lastXPos = nx;
  441. X#ifdef    NOTYET
  442. X    }
  443. X#endif
  444. X}
  445. X
  446. XdtProlog() {
  447. X    extern char *ctime();
  448. X    extern char *strchr();
  449. X    extern char nodename[];
  450. X    extern char *device;
  451. X    char buffer[30];
  452. X    long curtime;
  453. X#ifdef    OPT
  454. X    extern int optimize;
  455. X
  456. X    optimize = 0;
  457. X#endif
  458. X
  459. X    currentPage = 0;
  460. X    pagePending = 1;
  461. X
  462. X    time(&curtime);
  463. X    strcpy(buffer, ctime(&curtime));
  464. X    *strchr(buffer, '\n') = '\0';
  465. X
  466. X    getnodename();
  467. X
  468. X#ifndef    NOCHATTER
  469. X    printf("#Title: (stdin)\n");
  470. X    printf("#Creator: %s %s\n", progname, shortversion);
  471. X    printf("#PsroffVersion: %s\n", version);
  472. X    printf("#CreationDate: %s\n", buffer);
  473. X    printf("#For: %s\n", username);
  474. X    printf("#Pages: (atend)\n");
  475. X    printf("#DocumentFonts: (atend)\n");
  476. X    printf("#EndComments\n");
  477. X#endif
  478. X    printf("x T %s\n", device);
  479. X    printf("x res %d %d %d\n", dtresolution, 1, 1);
  480. X    printf("x init\n");
  481. X    doprologs();
  482. X
  483. X}
  484. X
  485. XdtPassthru(s)
  486. Xregister char *s; {
  487. X    printf("x X %s\n", s);
  488. X}
  489. X
  490. XdtEpilog() {
  491. X    printf("x trailer\n");
  492. X    printf("x stop\n");
  493. X}
  494. X
  495. X#ifdef    INSPECIAL
  496. XdtDraw(origX, origY, s)
  497. Xint origX, origY;
  498. Xregister char *s; {
  499. X    register int temp, t2;
  500. X    DBP((D_CAT, "dtDraw: (%d,%d): %s\n", origX, origY, s));
  501. X    printf("H%d\n", TROFF2DTX(origX));
  502. X    printf("V%d\n", TROFF2DTY(origY));
  503. X    putchar('D');
  504. X    putchar(*s);
  505. X    s++;
  506. X    /* We just pass these thru, scaling them to output resolution */
  507. X    for (;*s;s++) {
  508. X    if (isspace(*s))
  509. X        putchar(' ');
  510. X    else if (!isdigit(*s))
  511. X        putchar(*s);
  512. X    else {
  513. X        extern int indtres;
  514. X        temp = *s - '0';
  515. X
  516. X        while(isdigit(*(s+1)))
  517. X        temp = temp * 10 + (*++s - '0');
  518. X
  519. X        t2 = temp * dtresolution / (ditroff? indtres:
  520. X        TROFFRESOLUTION);
  521. X        DBP((D_CAT, "dtDraw (scale): %d -> %d\n", temp, t2));
  522. X        printf("%d", t2);
  523. X    }
  524. X    }
  525. X    putchar('\n');
  526. X}
  527. X#endif
  528. X
  529. X#endif /* DT */
  530. END_OF_FILE
  531.   if test 13519 -ne `wc -c <'dt.c'`; then
  532.     echo shar: \"'dt.c'\" unpacked with wrong size!
  533.   fi
  534.   # end of 'dt.c'
  535. fi
  536. if test -f 'fonts.lj/S.16.pk.UU' -a "${1}" != "-c" ; then 
  537.   echo shar: Will not clobber existing file \"'fonts.lj/S.16.pk.UU'\"
  538. else
  539.   echo shar: Extracting \"'fonts.lj/S.16.pk.UU'\" \(8947 characters\)
  540.   sed "s/^X//" >'fonts.lj/S.16.pk.UU' <<'END_OF_FILE'
  541. Xtable
  542. X !"#$%&'()*+,-./0123456789:;<=>?
  543. X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
  544. Xbegin 644 fonts.lj/S.16.pk
  545. XM]UD``0``````````!":N``0FKJ!T(0```#,O0_LQTB_1/]`]#ST//0XCT//0
  546. XM\]#B/0\]#ST//0XCT//0\]`[D;P[@KP[9;H[812Z.U$TN#M11+@[I+<[Q+8[
  547. XMQ+4[[TM#ODLSP$LCP$L3PDL#PO2CQ$D\3T@\;T8\CT0\E#/+]"/,]\UL]<]-
  548. XM'SP0P'@D````1CT<_!NHW7U-'7T-#4T].MC0:4=8JET$9+F%TC4]&674,TTX
  549. XM1-<R/5@EV"(M?0V2$]B]I=FMQ-J-U-N-Q-R-M-V-I-RME=J]@Q+9T-<B+84H
  550. XMU3(]=$C30SU%:=$U/26)M&306JA726T-BM/3U-#0U]'4?=B@H"8E````-R\G
  551. XM_".\'17.]\R<SWSET1`!DP8@`9,=%<[WS)S/?.71&\#`828````W+AS\&Y?;
  552. XM9\UH73TJ1CJUI)B4M,=TP]%U3#TW--`M5B31+683T3UJT2V(TBV6TRV7TBVG
  553. XMT2VVT2VHT#V*T"V#%M`M=";#U4-\+417L])'>ST$F*25NHTM*WO6F7VVL%HJ
  554. XM````-R(C]B$2T5T#$\Y!3,0TRD5,A'3&24Q$M,),%,!,-*3%2$QT9,E$3+0D
  555. XMS8SVT4T6SXS4),M$3)1DQTA,5*3#3`3!3"2TQ$E,9'3(14RD-,Q"/.?0,2T2
  556. XM6`DM````-RH#^A'8L$`\````,28E^R+7/573?1;2;2;2;2;2;2;2;2;2;2;2
  557. XM;2;2;1?375?6;6;6;6;6;6;6;6;6;6;6;6;6;6;6?577,+A`/0```#$F)?LB
  558. XM/776;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6?573?1;2;2;2;2;2;2;2;2;2;2
  559. XM;2;2;2;2;375/7"X)D,````L)2W]+/UX?#>6Q5GVQTCVR#CB;)*&R3XG;*+L
  560. XMYVTHR_R<0*!V1````#LT+OTMOBUO34;2^-"L\A?.,GS2-\PE?+)FRB=\DH;(
  561. XM*7QCI\4K!\0[%\,K)\([-\$K1\`K9[\K=KXKA[TKEKPKI[H[M[DKQ[@[U[<K
  562. XMY[8[][4L![0\%[,L)[(L1[$L5K`L9Z+':2R'<\EV+*=?U3_7'9"P:4@````W
  563. XM+B_\+<:M7$T&ALQL!LE<1<9L9L-LAL%LIK;,:ESEELYG]M!E?0=&TF/B?2<F
  564. XMU&'W4L8EPN1<I<+U+&)<+4<6U&+WTG/VTF7VT&?VSFELQK;*;!;(;#;&;%;$
  565. XM;(;`;,:&T,35K&"P84L````Q+"[^+<DMWB3;XFV>*-<A?6\B;5(WU"1M,T?2
  566. XM\F;1)WT/*&SRE\[RILTK?,\L!LLL%\HL)LD\)\CRQ&QSQ'QO+&;%+'?$\LAL
  567. XM,LE\(LIL$\IL$\I[7)>8QY7\+`Q@H"E.````+R@M_2P>3+(L<A/'7CR2"DXB
  568. XMNRL^2_L^(KL@].,LE<<Q+'(N3+&X%U`````U+BW]+`0&?(?![:;(;!C&AOR&
  569. XMR+AD4@```#,J+?PL_<-\JCC-9(SE1\]%?.18SC:,TW?.)XS2B,PX?-*7S"F,
  570. XMLJC7?7C7C7?8?7C7?8;87:/:/:/:/:/,+`/-*SSBH\XY//*3T"DM`X/0-ST$
  571. XM8]%%/15#T',\VCVR_<+`-U,````:&"+^&]"<T89S9=5-9-9-9-;TUEUN)-?U
  572. XMUFU7U8TZTKTKTKTJTYU'U7UEUN)-$432C460P#M4````-RXN_"UFV6J].WT-
  573. XM'072S2/4K4)DB(1B.79Y,3Q67%_15%T4TD1-(N+50D`8XX`:[;8!J`$OV<#`
  574. XM554````S*BW\+*_9WH`6Y6`4S=U]=R8GTV5E;&=G:6AH9VEI96IJ8_>FIR:V
  575. XMMAY'MK<6MK8O>FIS:FIE:6EG:&AI9V=L965M-R8GU]?=P!3E8!:-[]F@L$I7
  576. XM````-RXM_"S`_*TXV^1LA\%L'$MKDVMK9GIJ=VIJ:'EI>>AI:6OC:&AL'V=G
  577. XM;#9F9L5E96QV1D;)8V-LQA86T,35K:Y6VXT_RL"P9E@````S+"[]+<6M+&S'
  578. XMA\AL)L1\1\%\9[?(>7RG?WS'7WSG/G?0<^)\YU;.9GS'?VS&GVRFM<I<'UR%
  579. XMPTR$Q?3&3'/&.BA,1(23Q#DA*#Q#@B*2Q"DB*3PCDB.#PC@RPL+"/BP<+!*H
  580. XM=ED````[-"[]+-GQUS_55\HF?)-WR"EL<J?&*P;%*Q?$*R?"*S?!.T?`*U>_
  581. XM.V>^*W>].X>\*Y>[.Z>Z*\:Y*]>X*^:W*_>V+`>T+!>S/">R+#>Q/$>P+%>C
  582. XMQGDLAH+)=RRF8LMU+,<RS7(\YQ+/K0^-)M3TUBO@P'1:````)20P_2[4?>S9
  583. XM1UUCM-0]!-(])-`]-<333%TEIM-*]M-:/54!)0$N)M-W;0Q6M7-&E:,FE<,6
  584. XMA=&6;3AEU(5=5U;5=/;6<WUF1M=D;6=&UF1]9D]M9E;65FU69M57;46?736U
  585. XMT5T$T$TTI=5678T-V-:`3%P````W*CCZ*Z\JU*MJEJEJEJEJEJEJEJEJEJEJ
  586. XMEJEJEJEJEJEJEJEJM:UJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJU:XP`8
  587. XM:O';B$M>````-RHX^BLJ]*UJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJ
  588. XMQ:IJEJEJEJEJEJEJEJEJEJEJEJEJEJEJEJEJEJI:PP`:VO';>`E?````(2$#
  589. XM`/#;P%IA````+28<_1O1??T-IE6RA9629J625L5S1M%6)&TE8D;253-M-D)&
  590. XMTV,S;54R1M52-&U5$T?5425M:%;6=FUF?B;665U6E=1Z71054C6T-5)%=61#
  591. XM;0F9C14PP(EB````)R4[_BW<;?O;55V#E=8[35/%TST%TCT5T3TET#TUT"U%
  592. XMP]-L+47#U%PM1L+47#TUT"TUT2?0T371TB;1TBAQ71+47#U5LM9;\M9I/6:>
  593. XM(M=H/6>.(M=H\]9I/5:DU&E=-J(3T6LB/&PC.ET#1&;1)M#3*7UB`5,!7B(!
  594. XM4P%>(@%3`5XB`6"P3V,````D)"K_&Z;&**PS;"P2;$LUQ;)5E9-$P$DD3"1S
  595. XM0\0W)2QB8T/&-28<@D//)"T#(]'R(M(A/2(2TUT^)-3SU>(M7B/4XSU.,]3B
  596. XM/5+#P%9D````'QLN_2W4;6K253T$@[2BI,&DV?39XEV6V'V'UYUIUIUXU+T=
  597. XM'%-Z9FAH5VE6:T9L-?;0-/;1,WT3-]$DXFT33VT#5L-UPW6SE9.U<]!5/2O6
  598. XM;0#`*&4````<%AS\&]":R&T6TETUTVTFTO;2?2_6/VT^5=7UU5U5HU5TC,A@
  599. XMP%)F````'QT[_2W5Y"WJUKT]#20FTDVTVTVTVTW#W$VTV_3;3;7;3;7;]-OB
  600. XM3;7;XTV^-=SUV_;;;:C9K7T-31U-'4T-:]B-OUW.)-(V34-3UIV5L,!19P``
  601. XM`",@*OX;5+>(>U,T1&4C12.%(E43I1)8N%?']FT'5M!G;0;W715_;09_715_
  602. XM;09_715_;09_716%T&A-%H/27>7=]MWUW?;=]=WVW?7?.<!<:````"$<+OTM
  603. XMU%V)U%--)5305DQ82O64E:5VI76U9K7U;%1M!?1L;S;08VQR?&-M!C_<)\8_
  604. XM;08VQS;&1=!C;05/;&1K9O6U=:6%EH65E86TA,1TT45-)$35C874T"MI````
  605. XM&1,<_1N#`10!#B76WB76WB76WUUM4!!:(6HA6IHA6C%9,T=$5$>Z:<!.:@``
  606. XM`"@A'/P;<])*3(A;F%E!:%@S9V9%.64]95/74TUV(]FMK0U]3299T&A\6VM<
  607. XM6FQ:;%<O%=!7C05IT%8A7153%=%4,ETD,S34A#UU4,!2:P```"DA+OPM=MZ-
  608. XM]M]M_B;?]M]=_VW^)M_VWUW_;?XFW^)MV-N=E";70VUE-M55;35FTEA=%9;%
  609. XMIK7&E=!G;19FTV1M1C?54GUF%M=A7983VU#07FP````J)2K^&[,!(P$$`13>
  610. XM)0$%QM;&U=]0$%QM;&U=]0$%QM;&U=]0$%QM;&U6+U4!!6)&UE-'MU)7J%)8
  611. XM@Q5#2E0T,U`3:&4WI(4"'V`A]0(?8"'U`A]@(?4",P(PP$=M````(R`<_1MF
  612. XMU#&]-!O27V7356TF5M)6729ETE9M%F;15UT6==%7;06&Q97%I;6FI;:5Q970
  613. XM6%T&9=)E735%U5)=:]B-M=[`6&X````?'#O^+=/D+=O2T<T[8GM]=]=]AMA]
  614. XMAMCWV.-MKVVM+1TM'1Q1G$VDVDVO3:3:7:]-I=KTV_7:;9?9C7O5S5T-/2T]
  615. XM'3T-6]>-KUVSTB=-)$35G860P#QO````(AT<_1O1?6T-%E7%A9:E=L56T%3V
  616. XMT6\FTF\6TV%M+1TM#]-A]M)B]M%D7095QG6FE87%5M'0UGT0P$-P````*"4<
  617. XM_AN-]P$E`30!-$<V+1.2<M`Z)RPZ-CPK-CPK)SV_-SVS9-KS=-GT=-CTA-=8
  618. XM376%UDE=7UEM/B6UU"T3L,!-<0```"0@*OX;UFVKUT5=-77164T%I;6UKUQO
  619. XMA=!O==%G70=FT']ET6;VT&?UT&=L:&Q9>EJ(6F$U7&*M%5;37=]MWUW?;=]=
  620. XMWVW?7?/?P$9R````*"0<_1O0V<W)WGWW=FTVEM%K70;07%T5MM%;726FTEI=
  621. XM-:72:6TEKUTUI=)J726_717%T%T4Q=):746%UE5=J]Y]D+`Q<P```!\A'/X;
  622. XMC,?/70301)/$.RQ#L\,\`\,L$\,L!-%-'ST>)-#B30]=!-#C7031/(#`3W0`
  623. XM```F(1S^&V74-IT6,S7'(U3'$V6W$G7)9M!W729FTU9=0X74*&U"A=4H74-V
  624. XMU"A=4H74.%U"E=,Y33.DTRM=$[70/%P]%:/39DULVWT`L'MU````*B4[_2W-
  625. XMXBUO/6\M;SUO+6\];RUO/6+3G,Q,=R,UPV4F6V<G65@X5UDY55HJ5%LK0VH[
  626. XM4EL[46LL!17`+`45L[P+.[P"P%%<`K85L[4ELZ8TLK5%HJ55DY5U@X65<G:U
  627. XM8E;#4S)\?$S)TRUO/6\M;SUO+6\];RS`L&]V````+"8I_AM5SB.LHR,VR#(T
  628. XM?&,R9\0\%L,\)L(\1L`\5L`L=J/':3R6<\IF/+93S6,\YB/043T8TGU%U>)M
  629. XM.-&=`R;.,VS31LPV;*-VR3EL<Z;&.VQ3P6PSPGPBQ&P3Q'8C/&93(\AC,CRJ
  630. XM,LUEL(AW````+BD[_BW1XBVCVN(MH]KB+:/:XBVCVO+(7"*3:;.&,S6BAR-4
  631. XMHH<399*'$G6#F6:"MW62P&9I+!5ED\$X62PBAI+"*%HL(H63P3=I+"*%HL$X
  632. XM6BP2E9/`.5DL`Z62P"M9*SM8.CP&<I3"5R@\5E)DR&(T3,P]&M8MH]KB+:/:
  633. XMXBVCVN(LP+!C>````"PH'/\;<LXX/-93S74LYT/.<ST&,M)2/30BU3(L0L,Q
  634. XM/#3"(BQ$PB(L-<(B+#3",3PTPB(\-,$R/#/",CPSP3,\(\%#/!3!-$MJ5%EY
  635. XM5E:F9\0<.<(L*L%,#`IYQ&M<$`@)>0```!$#0_DQV,`M>@```!\40_LQTTT$
  636. XMT4TDTO32[832]-)-)-%-!-9-5-1-3TU.V$U/343435360,@M>P```!\40_LQ
  637. XM36353434]-3MA-3TU$U$U4UDT$T4TDTO32[832]-)-)-%-!-,+!"?````#<N
  638. XM'_P?EM(6O/)<+-),3,(V9LLB2UR3(\)<<Q/$7%,CQ5Q#$\=<(R/)6T(LMF8R
  639. XMS,1"S<)2S[<=%@`A8!`00$@3?0```#<N'_P?IQ=P`7;5`!=G<:?(0'X````?
  640. XM&$/],2V?/9XCV>(]GB/9XCV>(]GB/9XCV>(]GB/9XSV>(]GB/9XCV>(]GB/9
  641. XMXCV>(]GB/9XCV>(]GSV2L'A_````-R\P_"Z6Q6Q+N\##?#E696972T-+1CP4
  642. XM%,$U/#,3PS-,1<1"/%7%,CQCQC'SQSQVR"QVY=T^(3VS/SV34]<V351SU3D]
  643. XM,Z312TSTP4S4PTRTQ4R4QTQTR4Q4RUP5S5M=!)331TU45-=#39,SVS$]Q]U=
  644. XM_B/*P"BA````(QD[^RW"V?/876?4G3(3$M(Q,3Q",DDT-#9%-4)'-VDY+@(+
  645. XM.U`JH@```$8]%_P;B3E2E3E2E3E3E3E3E3E4.6'3D4DCDSDSDSDSE"E#E"E#
  646. XM9<`HHP```",9._LMO@(#LI.6<W0D4U1C0T.4(R3#$Q/2(3$M.=1]9=CSVBM0
  647. XM*J0```!&/1?\&V4Y0I0Y0I0Y,Y,Y,Y,Y))'3&6-)4Y4Y4Y4Y4Y4I4Y4I4XG`
  648. XM3J8````C'B'^(!+>3=;;C9,6US-M4U74-UTCAM`Z:SQI/16#TU8]1D/68CV)
  649. XMVGV)UF(]1D/35CT5@\:3IK.&T#==(U74,VU3%M>-EMM-XM[`4*@````C'B'^
  650. XM(-\MU-MMF-=A/64SU%4])F/0:#MJ.EPX71-FTC1M0R;6,5V'VC%=@R;6-&U#
  651. XM9M(X71.EP[:CT&@])F/453UE,]=A/9C;;=3?('@)L````"$A`P`RV[`FM0``
  652. XM`"\F*?PG$M5>T-0_$](S/0-$SD5,Q'7(66Q&P'I\/*Q\3-K"L">V````+R8I
  653. XM_"?"K-Q,?*PWI\!L1I7(5TS$5,Y$/0,_/2,>T#U#$M4@L#NW````+R(K^B7%
  654. XMQ<')O+I\U=!=!-%-%-(]+STO/2XCTN(],$WBU.(]3SU//4/33333337273?0
  655. XMR\')Q<6P.+H````W*BOZ)<7-PM"].GU6UUV$V4V4VCVO/:\]KB/:Z#W.(]SS
  656. XMW//</;3;3;3;7:;:?8T\+0Q<T+`XNP```#<J*_HE',Q=##TMA]IMI=M-M-M-
  657. XML]SSW//<XCW.@^+:/:\]KSVCVDV4V4V%UVU7O2O0P\S%L$"^````-RHX^BO%
  658. XMS<+0O3I]5M==A-E-E-H]H]I-KSVN(]KG/<XCW//;3;/</;3;3;3;7:;:?8T\
  659. XM+0Q<T`&TW!W2W+!`OP```#<J./HK',Q=##TMA]IMI=M-M-M-L]P]M-OSW.(]
  660. XMSG/BVCVO/:3:/:/:39393877;5>]*]##S``</<+='<)H#,@````O)A'\%MOG
  661. XM:,/`(LP````C&AO\'9C3S-.=5]=?V3XML0J>(=L_V5UWU9T\S3B0H'C-````
  662. XM1CT]_"Z^L-.XS+['FPG#>X?`6^6]7"6Z7$6X3(2V3*2T3,2R3.2Q/0.P/2.4
  663. XMTD@]0W\]8UXCV#/C/:,>H]P^,3VC/B/8-?/6-SU#A-))/2.P/0.Q3.2R3,2T
  664. XM3*2V3(2X7$6Z7"6]6^7`>X?#FPG'OLRXT["^P![.````'Q<\_"VCUN==;F.U
  665. XM0T40.!5#1;XSUNV%UNPZL#'/````'Q<[_"VCQ^9<?C.U0T40*15#1;XSQ^9<
  666. XM<]\\?F7'XSM4-%$"D50T6^,\?F7'.L!'U0```!T</?PNV$V7UT(]5"7406U#
  667. XM)OTT)M-#343:Y4VN)=KTVN5=GF79Y5VO3:XEVN5-I--$328TTO8STV)--3/5
  668. XM,SUWV5UPP&C8````(QPX_3+8+<\]L]1B/1T=!&7#E+.EE*9THQ1CLR-?2S)$
  669. XM2C-#6C-22S1"]*-4'UHUKBDVKC@WKC<XKB8YKU.E\44Z0D0[0E,Z4T,Z1/0C
  670. XMM%]!.D=J25E*6%M630T=$R;4/;\]PMBPP]D````_.#W]+LNM_$VLC6>GTFQ&
  671. XMSFR&RUS%R4T$QTTDQ4U$PTUDP4V$P#VCL]PY3<2#WC?S`0-3RFQC0\@F/#-#
  672. XMQBL<(S/&+!'",CQ2P$P3(\0[7!,CPSP%P3$\0\!<)L-,$\-OPSU&YL)-0_$\
  673. XM(],R/"32,CPSQ1P#,\(\4;-#PSPQP#0\0L,<`U/$+!'`-CQ2L<$W/&)CP3A,
  674. XM=L-)/<.SVCP$V$P4UDPTU$Q4TDQTT$R5S%RVR&SFQ&TGI];(VL3?K+!X#=H`
  675. XM```F'Q_]'MCI"1V`6`S@````.!)#Z##?Z590V`WA````.!)#Z#+@/7L(`-`F
  676. XMX@```#@40^@P`3,!%0$&UM;6UM;6U];?;6U];??6WWUMXWUMX"E]P#+C````
  677. XM.!1%]3+0[6?0;0]\]\?'T&T&Q\>WQL;133;3;2?2?1?2;2;1?1?1]]'WT6T>
  678. XMUG"X+.0````X%$/H,NVWPFPN-\)L+WPFPO?";"?";#]L-L)\)L-L-L-L-L-L
  679. XM-L-<4]@-\````#@20_,P"`X#VW!0#/$````X$D/S,F7I7?"X+/(````X%$/U
  680. XM,#Q5PVPVPVPVPVPVPVPGPFP_;#;"?";"]\)L+WPFPN-\)L+MM\@R\P```#@4
  681. XM1>@R[6?1;1]]'WT7T7T6TFTGT7TGTFTVTTT6QL>WQ\;0;0?'SWSWT&T.UGT`
  682. XMT";T````.!1#]3+>`I?6WC?6WWUM]];7UM]M;7UM;6UM;6U@$%`1,!/8"_4`
  683. XM```X!T7H,@`>4$@)]@```$9%`@`1U9!%^P```$8])_PCKAT3STSO3.3.3///
  684. XM3.3.3.Q*/&HL>@7-7+;*?)^,Y\]=!=!-!=#&I,6EQ*9-!-!-!-`]!-!-`]!-
  685. XM`]$;H-@+_````"8?'_T>`#PPD$7]````1CTG_".Z'1/030]-!-!-`]!-!-!*
  686. XM;$I<:DQM!<]=!L]\[XR7RUS%S4S5HL6CQ:3$SDSDSDSDSSSTSDSSSTSST1K@
  687. X:0!3^````-RXO_"UA)WY?-@U>76$V#5#U]O;$
  688. X`
  689. Xend
  690. END_OF_FILE
  691.   if test 8947 -ne `wc -c <'fonts.lj/S.16.pk.UU'`; then
  692.     echo shar: \"'fonts.lj/S.16.pk.UU'\" unpacked with wrong size!
  693.   fi
  694.   # end of 'fonts.lj/S.16.pk.UU'
  695. fi
  696. if test -f 'fonts.lj/S.24.pk.UU' -a "${1}" != "-c" ; then 
  697.   echo shar: Will not clobber existing file \"'fonts.lj/S.24.pk.UU'\"
  698. else
  699.   echo shar: Extracting \"'fonts.lj/S.24.pk.UU'\" \(14167 characters\)
  700.   sed "s/^X//" >'fonts.lj/S.24.pk.UU' <<'END_OF_FILE'
  701. Xtable
  702. X !"#$%&'()*+,-./0123456789:;<=>?
  703. X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
  704. Xbegin 644 fonts.lj/S.24.pk
  705. XM]UD``8``````````!":N``0FKI#0(0```$U(8_E)VRV_3979397939793979
  706. XM3979]-E=E-E=E-E=E-E=E-E=GTV5V4V5V4V5V4V5V?397939793979397939
  707. XM79]-E=E-E=E+4;E;0KE+-;=;)K=+(1:U6Q$FM4L"-K5*\6:S6N%VLTN&L5N&
  708. XML4N6L%NFKTNVKEO&K4O6K%OO:K2_:J7`:I3!:H7":G3#:F7#:F3%:D7%:D3'
  709. XM:C3':B7':B3):@7):@3+:%RVA,QG7-9DSF5<_V1-%B718DTF%=/Z#5^-9]AM
  710. XMA=I-H\*PVR0```!I7"WZ*\2=Z='$U\/,R-/'R,S/R\7/RZIL/1R8PUP7K#Q8
  711. XMQEML/!PXR4EL7!P7S$A<?!M\U67*P)?/15S,!WT41,[`9M)$3/P$;4,TT,`V
  712. XMU4)-'`%M<R/3QM<Q34Q-B-7"VFU\':;7P-MMC`VFV<#9;:P-AMO`UVVL'7;:
  713. XMPM6-C$U$$]?&TS(]=AP-%"358\#00SU&3`ST1-)FP,Y$31=\#,54SWG`RE9<
  714. XMU[P<=83,?!P<5I3)C#P<-K7&C%PZ?!7#C)T<-JK+S\7+S\S(Q]/(S,/7Q-&=
  715. XMZ<20/"4```!213WZ-K@==].=&AS^*CS:7-XJ//H=&=-]<0`VK9$)4=D`-J'7
  716. XM?3G1H<_BH\VES>*CSZ'1G3?7&X"PLR8```!21BWZ*\.-J<#"U,"L;0PHRLS`
  717. XM$WS<F,-JO&?%;!K$?%7$K";'3'G`;'3)FFR$RIALA,R77)/.E5R4SI1LE,^3
  718. XM7*/1D5RSTL'+32P<L]2\P]6LP]6<T]:<P]>,P]><L]B<H]>LH]>\E-7!R3U<
  719. XM')/449R#TU.<=-%DG'/159QTSU><<\YHG&3,:IQDRFP)Q4R6PJQ$QGQ*Q%PW
  720. XMQKPUN,G&B1P,S$K&T,+`PM3`PIVH$+"&*@```%(S,_$Q$]\Q7=O;P=EQ?7<W
  721. XMU75]-W?1>7SWM\U\%\M\-\E\5\=\=\5\E\-\M\%\U[?/>7T7=]-U?5<WUW%]
  722. XMG!V[W9WWWYW;V\'9<7UW-]5U?3=WT7E\][?-?!?+?#?)?%?'?'?%?)?#?+?!
  723. XM?->WSWE]%W?3=7U7-]=Q?9P=N]U1/?,0$`TM````4C\%]QH5L=L5L:!6/```
  724. XM`$8U-/@RURUETWT9SZSISYSYSYSYSYSYSJSJSJSJSISYSYSYSYSYSYSYSYT/
  725. XMC3G3G3G3G3G3G3G3G3G3K2K2K2K3G3G3G3G3G3G3G3G3G3?577(0H%8]````
  726. XM1C4T^#(1V%U7TYTYTYTYTYTYTYTYTYTZTJTJTJTYTYTYTYTYTYTYTYTYT_C0
  727. XMG/G/G/G/G/G/G/G/G.K.K.K.K.G/G/G/G/G/G/G/G/G1?376+7"X-T,```!"
  728. XM.43\0^(!J\#*P,"LZL"=",#YTFP)TUP/G43`XIU4OCG6.YUDXJG7/MRI`3L!
  729. XM'"U^+3S@H+=$````6$U&^T7*,!Y0'/<!KY`8^P`6^R`40:`3,J`20Z`1-*`0
  730. XM\VK>.*W$BPVSJMI*L-D[&MA+&PUSLZUDM*U3M:U$MJTSMZTDN*T3N:T#NZSD
  731. XMN[#-.]K,2]L,L[^LI+^PR3P:R$PJQSPZQDQ*Q3Q:Q$QJPSQZPO/)K`/+J^3+
  732. XML+T\VKQ,VPNSSZNDS["Y/1JX32JW/3JV34JU/5JT36JS/7JR\]FK`]NI3;L(
  733. XM/=I_`<7P'C\"`0;PH)Y(````4D5&^D3"L-NXU+[/J:RXMHQXNHQ'OGP8P(OH
  734. XMPHO(Q(NGR'N(R(MHRHM(S(LWSGLHSHL/C0B?C2A_C4A9U)3XUH/BG6DH<\0W
  735. XM@?ESQ#>WYWRGM_<\0WD8<\0W@N*=:3^-:$G4E?C4AITI>-*)^-"+#XSHLHS(
  736. XMM(RHMGRGN'R'NGQGO'Q'OHP(P(OHPXNHQIMIR;";#.OM.ZVK#""@J$L```!)
  737. XM0$;\1<0@$O0!#VWN*-SBK:XK'8L]<QK7,IUC.M7S2=0UK3\VG2-ZT3B=!(K/
  738. XM.:SSJ<Y*K-.PK-.QG,2QK+.RK+.SG*2SK).TK).UG(.VK'\[><8[BL7SN9Q#
  739. XMNJPSNYPDNZP3O*P3O9P$O:OSOJOSOYODOZO3P*O3P9O$P:NSPJNSPYNCQ*N?
  740. XM/%FX/&JW/'FV3'FV7&JT;&JRG%L*LL&S;BN;>_"0,$X```!&/4/\0BYL]$QT
  741. XM/B3)0N0\LP`;KD.W.LYKVLY#MS`!]N4\U_RT$\LR3)0N;1&X(%````!/1D3\
  742. XM0PMHO4O%K4K'X!V=2<>]*\7!T,&.+1P-$+"J4@```$P_1/I#$!\P($`?2]3$
  743. XM6]C`6MN5O;AKVW>]MGO<6+W$F]M9K<2;VTJ]I+K;.[VCP+V3P;V$P:V3P;V#
  744. XMPKUSPZ`9L!FP&?L!FP&;`9H!FP&;`9^P&:`:@!SV`>0!Y`'D`>0!Y`'D`>0!
  745. XMY-D\9-H\5-L\1-M,--P\0]T\,]X\)-U,%-Y,!-]+3?6D`02D`064`0:$`0=T
  746. XM`0ADWZ5-[`1-K%/P'S`@0!\PL%Y3````)R8W_"O*O+QL;*PHE\!\-*;'*ETV
  747. XMTVTVTVU%U%U/74XEU&U/75XFU/?3C2G2G1O0P,_!SL+-P\S$S,3,P\S$S,/-
  748. XMPL[!S[T9THTWU.)M1=1M1<M%7,P<Z])L,+!C5````%)%1?I$J-6,7"S\+!Q,
  749. XMW$O'R<><G'R7R\7+7-P\U,[!SC>KNZ<EPIN<)23%B8Q4%,=Y?'?\EW?);*=7
  750. XMRFRV5LL\YS<!GV-@&U-0'.)A8!U14![CL!_M>0'[`<PP$>+5QK"/50```$P_
  751. XM1/I#P^+4W,(!>@&N>`&,,!#+V-/2LH.\Z6AYRIB)G'BHN,2;C`G!C!C"BYP8
  752. XMPIF<*,.7^<.,25^<2,63K$C%HIQ8QI'GK%C&H9Q8QI*L2,6C^<2,65^<.,27
  753. XMG"C#F9P8PIN,&,*,&;C`G$BHN,>8B9RI:'G.LH.]+3V,L!##`7YX`:H!?"W.
  754. XM+4Q`H(A7````4D5$^D.WXL73L]Z@$>:,6+J+NYN(N;RWBXL4FVBWF9M8MIL/
  755. XMBUBVBRXHM(M8M.L(LXM(MGLXLXM^*+*+.+A[*+-[F+&+*+F+&+)[M[&+)[N+
  756. XM"+%[U["+%[YZBP>_B8J,!YB8PGB(C$=X>,:%AHR).$C,MQK/OM.YVK$!#G@!
  757. XM&MZST^+%N+"@6````$Q!1?M$SL$!3)W<_7N[TJQ:SYR9S)S9R9SYQITYPYU9
  758. XMP?G7FYV9GYVY?YW97ZW:2=^3YZWZ.=^4XJW:7YW9?BG;F9V9OXV8P?C7C#?7
  759. XM?$C5C%?5?';5;(?3?);3;+]M%LU=%<]<]<([7/6VP$STP&P%S5P#\3P$S4P#
  760. XM+SP4RTP3),$\L\%#/!/+/!-$P#RSP$3CR,G(7\?)QVQ\K&.HMUD```!834;[
  761. XM0P;_$"`_`>7P''K=.+#;2:VSL/K9.RK7.SK62TK5.UK42VK3.WK22XK1.YL,
  762. XM]+JL\[NPS4O*S3O;#+2^K+/`^LD\*L<\.L9,2L4\6L1,:L,\>L),BL$\FPOT
  763. XMRJOSR["]3,J]/-L+M,ZKL]"KD]&KA-*K<].K9-2K4]6K1-:K,]>PL4V*L3V;
  764. XM"DVJH]NPA-RH/>^F,!"D,!&C0!*B,!.A0!3[(!;[`!CY`:]P'%`>/*"PM%H`
  765. XM```X-T?\1<^=[%V&EM5,)M%,9<],ALQ,ILI,QLA,YL<\]L9-!L5\U\.<UL/B
  766. XMG-?"^,]\)=%P%'`4Y(T1Q8RL&YQ\:9Q<IYPXP%:<&,1%G`C&0ZM\DSFWRS*9
  767. XMC-(IB,[!>,_`>="WC1MHTK7YTJ6=.EG3E:TY6=25^=.5K3AITY;YTX>=*(C3
  768. XMB/C2B8T8J-%[C0?!?0?!C.?#?-?$?,?&?*?(?(?*?%?-?"C/B9T\K7Q=V]*@
  769. XMBEP```!2/U3W00$#WVW(VJV+#7L->PU[#7L->PU[#7L->PU[#7L->PU[#7L-
  770. XM>PU[#7L->PU[#7L->PU[#7L->PU[#7L-BMJ-RMNPV[#;L-NPV[#;L-NPV[#;
  771. XML-NPV[#;L-NPV[#;L-NPV[#;L-NPV[#;L-NPV[#;L-NPV[#;K<C>8!`P`\<!
  772. XM(0DA`2&@B5X```!2/U3W01,!!MZ-RMNPV[#;L-NPV[#;L-NPV[#;L-NPV[#;
  773. XML-NPV[#;L-NPV[#;L-NPV[#;L-NPV[#;L-NPV[#;K<C:K8L->PU[#7L->PU[
  774. XM#7L->PU[#7L->PU[#7L->PU[#7L->PU[#7L->PU[#7L->PU[#7L->PV*VHW&
  775. XMWS`$`0$A"2$!(=@*7P```#(R!0#I#\"PD6$```!$.BW\*\N0$</=Q]F6C5BW
  776. XMTWPGPDM\1\%)C&;!.8QWP#B,EZ1_C*>C>,N(1IS'@WC-=T:<UW-ISG9&G.A3
  777. XM><Z$1ISX0WG/@T><^#-ZSX)'G1<4B=%Q.9T;F=&J^-*;C2C`XXTGPGT)PGSZ
  778. XMPWS;PWRU)X)7R5-W-GQ65W-WPG=F2(B:9$K)PL#!Q<6L6LMGH.9B````.SM9
  779. XM_D7.C4M,^XRX=\AK)L9;5L1+=L);EL!;IK];M[U;Q[Q;U[Q+Y[M+][I,![H\
  780. XM"+E,![E,%[D\)[A,&+@\)[A,)[@\)[D\%[E,%KH\%[H\![I+*P)[L[&YO?.P
  781. XMN;U+"[NSL[`WNCP8N3PGN$PWMSQ'M_/$BU3%>U/&BT\\6;-,6;/B/&FR3%JR
  782. XMXCQILDQ:LO3%FS3$FS7$FS7$BT7#FT7#BT?!BU,3P)M3%+^+8Q2^BV0DO(MS
  783. XM1+J+@T6X>Z-6M(ND=K"+PYN[X["WP#LK+"3<XCW$W.(]Q-SB/<3<XCW/3<"@
  784. XM@6,````V.$#_*[:-.QODL;:\2PN+I*N[DZO;=)O[8YL&L+1(BRBT.'MGLDA;
  785. XMEK(X6[:Q-UO5L$=+]+`X/!24=,%).#PSA(/#1SA,-&30\V/11$T40],S33\S
  786. XM/4,DU#(]4Q35\Q/6?6XFU_78XDV>(]GTV3V>--CB3878XTV.--D]HKRPEF0`
  787. XM```O*T?\1<^-3!T,7-=URVM,AL),9L0\9<5,1L8L3VV.-MA]CXV(UZU;U;U,
  788. XM#4P=3`U,#4P-/!S\7,R,ITK(AJQGF<5[G"C!C!C#?!C$;`C%:XQVF<=IC)6)
  789. XMR5?BG*1^*<M&K*1^*<M'G*2/C+2/C*2?C)2HR$P'R$P'QTP8Q5PGQ4Q'PTQ7
  790. XMPDQWP$R8A<S&S\/2O)"P0V4````K(RS\*LK`R,3$QL.<R,Z,V,Z,Z,Z,Z<V<
  791. XMZ,[YS?G-K-_1;0:LWFG/XHT/?0C0?1?1?'&7Q$E\%JB'PLC%P\N;L'IF````
  792. XM+BQ9^T3.YCW3*M'%S\;-Q\O(RU2LM=I=I=I=I=I=I=I=KUVEVEVO7:7:]=KU
  793. XMVO7:]=IMKUVFVN)=IMKC7:Y6VO?:;:]]F-F-B=>];`U<+3Q-'&S\C-RLS)SL
  794. XMC/QM'#U,'6K8C9?:XVVO7,.US5E<YF70P].]AL7`BV<````U,4#]*X;5G1K1
  795. XMT+T*U(1'=G=S9F6G5&<UT'0W<ET7-(84U&,Y84U'(XO5<4BM9Q.9UW$YC8N)
  796. XMU[^8V'T'V7SXV(SWV7SXV(SWV7SXV(SWV7SXV(SWV7SXV(SWV7SXV(SWV7T'
  797. XMV(T&V8T&V7TCVW`<^`'/<!SX`<]P'/@!SW`<^`'.)P'6`?/2L*9H````,2M'
  798. XM_$7.?6O2P\YU;,:%RVELEK;';`;&?`?$?";#?#;"C#?!?$?`?%>XQ7M\9ZC&
  799. XM>GQWF,>'G'AXR(:<B&C(GUG(E8R86<F%^<B4^<F4G(HZR)2<F4_;/;3YR92<
  800. XMBCK(E/G)E/G(E8R97XR):,B'C'EXQXA\B(]\>)]\:*?%BWQ7P'Q(P6Q'PFPW
  801. XMPWP7Q6P6QFP&R%MLEI;+9VS61\_"TKUGS\!*:0```"4;+?HKP]EM?B?6C6XG
  802. XMUHUN)]:-;B?6C6]]:-;WUHUO?6C6]]:-%/%](QC107TC)]%"?00VT4-M!$;$
  803. XM5J5GA896O2T,U'T@L(UJ````/3,M^BO`,!)LML-\F<)\;!P7Q<+`C#4IP(PD
  804. XM2,%\%5C!?`1WP8M)3#BDT7E=)X33ATU(5=5U37<UUX%MC!VLC3S,[/S(G`RG
  805. XMP:R7PYQXQ)QHQ8QO?'?%C'>T*,=[,_?(>S*,AZ0HR'HS?):S-\EJ0HR6HSC)
  806. XM>$-\IW1'RV<U?,9%5L[!9L^I/46@L(1K````/3)&^D3`?>O<P-VM[YWIWOC?
  807. XMXHW_C>G>^-Z=[XW^*-_XWIWOC>G>^-_BC?^-[YW*V\#9P=A1C74XU52-15C3
  808. XM5XT5B,]XG->HS'N,M\"<E\*,A\.,=\6,5\:,1\>,.,B,&,F,",J:C,B8S8B,
  809. XMZ6C0A8T82=*"G3@HU)%]:!;8@4VGH)]L````/SA`_"NV/8:]2Z>\:Y][M[B+
  810. XMJ+B+I[GWNWN(NHN(NGN?>[>XBZBXBZ>Y][M[B+J+B+I[GWNWN(NHN(NGN?>[
  811. XM>XBZBXBZ>Y][M[B+J)-XNGE'BZ>3A[MY-XNHDWBYF#B;B).)MYDWJVJ$>PM$
  812. XM%H.+"S0G9(L;!3=4BT=E<UB_BRESL[&J=IM6L/C5]]7XU??5^-7WU?C5XGUF
  813. XMV#V0L'AM````-#$L^RNGT#3#S6+#S7/"S7F,UYC,CY?->GS(I\QZ?->O?,>W
  814. XMRXI\Q[]\M\!\I\!\J,!\I\%\E\)\A\)\B,)\A\-\=\1\9\1\9\5\5\9\1\=\
  815. XM-\=\-\A\)LI\!\M[?+>VS7E\YW?0=FT71]-R?5PM?`V*W%WPL(AN````+BM9
  816. XM_43-YCW,//QLO)Q\S&D<+%E:QIU9U9U9U9U:U9U:U?G5K5YIU_G7G7DL#)S,
  817. XMC+R<K(RL=CP<A=E=E=E=E=E=GUV5V6V?79XEV>-MGWV(V(UZU<#4P=/#T<7/
  818. XMQL[(S<G,RLS)S<?/Q=##T\'5K7C8?9;9]<H\!<M*;+A6SL31P-9\(,!N;P``
  819. XM`#,M+?PKVI`4TM[7VI>-=\?4C1?2?4?(U8J-=Y^-B'C:=HVX2=N$C<@YW(*=
  820. XMV/*=R?&=V1G<U]R1^=V1G<H9W)*-V2^-R3C<A(VY2-J5C:AWV8B->*?7>WUG
  821. XMT'TXTGT8U'N->'C;UM_2`4G:L'IP````/3@L_2K!WL`!&0$X`4<!5@%'>CL\
  822. XMEL`[/(7!2SR$PCM,=,,[3&3#2SQSQ$L\9,0[3'+$2TV?2TV$P$V/2UUUM==,
  823. XM!=;B7`757!757`;4]L!M1<%M/VP7T?;"?0]\-\Y\1\Y\2,R,2,Q\6<M\:,M\
  824. XM9\QLALT\L\6PCW$````V,$#\*]&-G"U,;1=GSGE\QL!\IL)\AL-\=L5\5L9\
  825. XM1L=\-\>,)LB,%\B/P'R8M\J+?)FHR9^GRII\FIC)FO?*F8R:F,F:?*FGRHJ,
  826. XMF:C)BWR9M\F+^,B,",>,&<6,&L2,*\*,-Q3`C$<DI\6"9HQH/%R';!RGB,SX
  827. XMW/?<^-SWW/C<]]SXW.)]UM\P$+!Y<@```#PW+/TJRM3(V,7:P]S"W<#=P:BL
  828. XMZ<"<R,1\N,6,F,=\B,A\A\IL=\M\7WS'Q/?-?#C-?#?.?#?-C"C-?#]\Y\-\
  829. XMV,*,U\-\Y\-\V,/WS7Q6S'QFS&QVRWQVRGR'R'RFR&RVQVS6Q'SVPGT6P&U'
  830. XM>-;'VL/?C7"@2',````O,BS]*K+)L<R<Z,]]!L]WLCOVLTOEM4ODMDO4MTO$
  831. XMMTO3N$O$N$O2N%TETDTN-='B71]M%='C;0XFT.)\_C?/?1;2/$"PBW0````Y
  832. XM,RW]*[703`K,>,'*AU1LBE1FR*1(;'I#EL>C26QZ))?)CR.GRG%)C+;Q.GS9
  833. XMF,U!.GSDPGSDP8SDP7SSP8SSP7T#P7STP(SSP7T#P7STP7SSP8SDP7SSPGSD
  834. XMPGSCPWS4PWS3Q'S$Q'RTQ7RSQGRDQGR4R'QTR7QDRWPUS7P5SYAM+'UL/;G*
  835. XMH,YU````/S99^T3*\]?TU_/7]-?SU_37\]?TU_/7]-?SU_37/1M<B[P[^_A3
  836. XM9[QX.'N'E)>V>DI[-[$[%[%[([)K![)+-I>S2S:'M#M'9[4[5EBT2U='M4M7
  837. XM\WMCMG\GMDMG\7MSMW%[9+:UMDMG'WMSMW%[9+:!>V2V<GMCMH)[8[9S>U2U
  838. XM@WM4M71[4[5V:U.T=VM$M'=[-+-Y:S.S>GLCLGL6L4L6M&L$I[9J.GN'@WB[
  839. XMA46+^_P[O(M-'TU_/7]-?SU_37\]?TU_/7]-<\F@M'8```!!.4#\*X?5L<HE
  840. XMM,<T1)Q4-&G#1#>L%$2)P$4ZF^2XF]2ZB\2[FZ2]BY2^FW6_BV7`FU3"BT3#
  841. XMBS3$FQ3&BP3'BDR8A,J'3+ADS81,Z#3/@ET(%-&QTK#4G5^-?XU9U+#2L=%!
  842. XMC04HST.,Y$C-1HRT>,I(C)2HQTL(QDL9Q$LXPTM(PDM9P%MHOUMYODN8O4NI
  843. XMNTO(NDO9N$OIHU3`F$1,&G-$PY9#3%E$0\>T4LJQU7B@]W<```!%/EG]1-'S
  844. XMWTW^(]]-_B/?3?XCWTW^(]]-_B/?3?\\5;L[-+&K=+)XLK8[*'5&M3L:5&:U
  845. XM.QI$AK-+&D.6LSLJ-):S.RHDE[,[2".GLDM7(Z>R.V<4F+([=A.GLSN%$Z>R
  846. XM2XF8LCN4$Z>S.Y2S>S.Y2RBR2Y2R>S.Z.RBS.Z.R>T.Z.R>S2Y2QBS.Z.R>T
  847. XM.Z.R>T.Y2R>S2Y.RBS.Y2R][0[A+-[-+=+1[,[=+5[,[<[9[,[9+9[)+5+=[
  848. XM([5+E[$[1+I[$[-+QZ2Q6]B3L5OX@Z7"ECAL6P%%?)O<ZXU+'93?XCWTW^(]
  849. XM]-_B/?3?XCWTW_/*H*!X````0CPM_BO:2R+->DRXH\NH3+ITS*<\VF3-I4T(
  850. XM5-%T32=#U&--1C/64SUD-+P[Q#.\6[0SNVNT)+MKLS.\:[,SNWNS,[MKM"2[
  851. XM:[,SO&NS,[MKM#.[:[-#NVND0[M;M$.[6Z13NTNE7TN5N59+AKA76VBV6%M9
  852. XMM'AK*QLGE["SJ+"5D96K&\*[LKL[JTN5N+:V>WN+2;2[L;&QOWMWND`->0``
  853. XM`!D$8_9)$A#_$A"P17H````M'F/Y2<U<I,Q,Q,U,U,U<SUS4S>T5S4S?7,7,
  854. XM7-3,7,3+7)71703/7/3.7.7.]<Y,[M%<Y,[USESDSTSTT$T$T5"X17L````M
  855. XM'F/Y25T5T$SUSTSESESO7.3.[17.3.]<Y<Y,],]-!-!-%<I,Q,Q,U,U,U<SU
  856. XMS4S>T5S4S?7,7,7-3,7,3+7)7-"P9'P```!212_Z+\)P$AP,'>.<7<.,C:-L
  857. XMO9-<[61-#50[?!TT.,&]%2?%K04FR)SE)LJ<U27-G*8ESIR&)="L5R71O!@T
  858. XMT\%[--701-;.4]G+8]K(@]S%D][!P!`2<`3-`G$+,0)QD!Q]````4D4O^B\=
  859. XMD0E1V0!!C9$)4=D`08V1"5'9$+!Y?@```"TB8_M)$M/TTETO3272]-)=+B32
  860. XM72]-)=+TTETO3272]-)=+TTETN)-)=+TTETO3272]-)=+TTETO3272XDTETO
  861. XM3272]-)=+TTETO3272]-)=+B3272]-)=+TTETO3272]-)=+TTETN)-)=+TTE
  862. XMTO327])-,A"0OG\```!214CZ1:.+&*VEJ:6HJ:6II:RAK*.NFNH8B@>@B)>C
  863. XMA8HWAJ9S>F9VJ'%ZAE:J86JF1:RAK%1:V:U3:MFM8O6O>O46L%L*'[%;&@LC
  864. XMLJ#FT:'/;B%<]2;-8US51LME7+5FR6=<E8;':6Q6H?;#:C;!:E:_:G:]:H>[
  865. XM>I>Y>K>W>M>U>O>S>Q>Q>S>O>U>M>W>K>Y>I>[>G>]>E>_>C?!>A?#>7Q7=\
  866. XM=G;)96RV-LWV%L^AT?G3]]7UUSMPL#NA````-258^$3&+6\]5=/WT9S[S<',
  867. XM,5$\LR4CR%)27%4U-<-%54P%9665=756E986I:K`7`3@)\1=4\5P-Z(```!I
  868. XM7"/Z*<`M+STO/2/131/2/131313170715M`PO!T,U<U<Y<Y,],]-`]`]!-`]
  869. XM#ST//1**L#NC````-258^$3%/5X"=<1,!<"J6F%I66575UE65EP$553#4U-<
  870. XM524ER#)2/+,5$\S!S;SYT??375\]<L5P.:0```!I7"/Z*8HM'ST//0/030/0
  871. XM/03/3/3.7.7-7-T"!?'3/09=%=!=%-%-%-$](]%-$]+STO/2+`"PA*8````U
  872. XM+C7],A/>;<?;G9O7P=7"U%&M)3K059SU:LU8K+6IRENLA<&L9<.L1<2L-<:L
  873. XM%<BK7*FERZA<VF7/I%T*-=*A74PM;`U,+2H5T*-<^D7-IERZA<J:7(JUQJP5
  874. XMQ*PUPZQ%P:QENLA:G*6*RU:LU5G/4ZT%&M+"U,'5O7G9?;;=/>"PA*@````U
  875. XM+C7],MX]UMM]F=>]7!U,+2H5T*-<^57-IERZA<FJ7(JUQJP5Q*PUPYQ5P:QE
  876. XMNLA:G*6*RU:LU4K/4ZT%&M+"U,#6PM11K24ZT%2L]6K-6*RUJ<I;K(7!K&7#
  877. XMG%7$K#7&K!7(JUR:I<NH7-IESY5="C72H5U,+5P=>]F=M]QMXQ#8"K`````R
  878. XM,@4`2P_`L#NU````1CD\^CH3`5,>W5`3L!%A4!%2;?8UWU1MUE;;9GV7>-6)
  879. XMC3BYSYP;R;Q,'!P<?9RM7/S]7)W,'*"P.[8```!&.3SZ.LK!W,G5S\_5RMG'
  880. XMP<'!Q+R;P9SYN-.)C5AWV79MME;=9%WU-M]B4!%18!&^W0$U$P%3$*!AMP``
  881. XM`$8S/_<WO[V\PKC%ML>TR+2QRJS9SHSXSWT'T6T6T6TETFT6TETFTO72;2XE
  882. XMTFTO73UQ"@'UTVT^)=-M/UTVTUTVTVTUTVTVTVTGTGTHT8T9T*T+'-R+?'N,
  883. XM6[PK^]&@6KH```!2/S_W-[_)O,ZXT;;3M-2TL=:MF=J-N-M]Q]UMUMUMWVW6
  884. XMWEWFWO7>;>XEWFWNA=]M_B7?;?]=]M]=]M_VWVWVWVWGWGWHW8W9W*W+'9U+
  885. XM?3N-&[SK_)&@6KL```!2/S_W-QR;_.N]&XT[?4V;'<K<G=C=C>?>?>;?;?;?
  886. XM]M]M]=]M_UWVW^)=]NC?7>;BWEWFWO7>;>7>;=]MUMUMUMU]Q]N-N-J=FM:Q
  887. XMM-2TT[;1N,Z\R;^09;X```!2/U3W0;"ZK;^IPJ?$I<6EHL>@RIRXS(S'S7SF
  888. XMSFSFSO;.;/7/;/]<]L_B7/;/Z%T&T.)=!M#UT&T%T&T/;0;0;0;/?/?/C.C.
  889. XMG-H,VBRL6HQ*G"K+^PN@`[K132+3/2/1$)!DOP```%(_5/=!&ZL+^LPJG$J,
  890. XM7*HLV@S9SHSHSWSWSVT&T&T/;0;070;0]=!M#B70;HT%SVXL]<]L_USVSUSV
  891. XMSO;.;.;.;.?-?,C,C+G*H,>BI<6EQ*?"J;^MN@`]'1/2/3+231.@$L@```!&
  892. XM.1SZ(QW!"`'=ZZV5VC&P-LP````U*"GZ+,2-#$RLC&S,/.P="]*?U'UE_8/B
  893. XMVA`!G.(=H_V%UG_4G2O0P<[#S,;(RL30C$"`T<T```!I7%KZ1:Z5T)_(I<*K
  894. XMO:^YEI66M9.?D[&2I9*ND:F1K)"MD*F0L9"FBUBDBWBBBYB@>]>>>_><?!>;
  895. XM;#::;%:8;':6]LEI1LMI-<U9)LUI!L]H]=%7;19ETU5M-D]=53;58N-==1;7
  896. XMDNDMF2UVXQ774FU6/UU51M-E735FT6?UT5AL]I!LUI)<U9-LMI3VR6EFQVF&
  897. XMQ6FFPVFWP7G'OWGGO7H(N8HHMXI(M8II"QD*F0K9"LD:F1KI*EDK&3GY.UEI
  898. XM66N:^]J\*ER)_0E:X+`LS@```"\C6OI%Q#TNE]'F73Y3QF@X8K4U!C4ULF@X
  899. XM;&XST^1='L]]'L-=/E/$L$S/````+R-:^D7$/2YWT>5=/C/&:#ABM34&-36R
  900. XM:#AL;C/3Y5T>=](P)STN=]'D73Y#Q98VD<$S,$0S/!&6-I0<`\`<?C/3Y%T>
  901. XM=](\0+!KU0```"PK6OI%U%V)U<#25$T59,]67/5(XLU4G,9)S%6<Q6?-6#SN
  902. XM)MGUV>1MA]CD;8XWV&V.5]>-?E?7C7Y7V&V.-]CD;8?8Y&V?79XFSCA<UV7,
  903. XME5S)1LSBE%S81<]67/1ET41=+`U9V%U`P,+8````-2I2^TH!(P&>)0%VVX1=
  904. XMG1%=?9U8:=5L;4;0?272C0;2G%TYM=.Y;346A=126%TV)7;34V9=1456TV1D
  905. XMXFTU5C?297+VTU=B;29V+VTEAA?1:-'BT5G1T&G1_06M'&K1XL6]&VO1^US1
  906. XMILT?I=#1EM#1XI71T8;1?Q:%TF)G;28O=ETG)U;2<^)E7396-M)F]C739U)M
  907. XM-885TVE1736ZTER=)M"-%M)]!M1L;5EHUMC7U]E4C<4!=@%^)0&3`2"1-=D`
  908. XM``!:3UK[1;>CU*O-L<BUQ**AHL"@J:"]BOBZBSBW>W>U:[:S:]:Q7!6O7#6M
  909. XM7%6K7'6I7)6H3+2G7+6E7-6D3/2C7/6B312A716@3325TUA-5'755DM8L$9+
  910. XM-%.N15L3H2K%1+!*,JQ$2O2E*K0UKDIRJE)*Y:<JM"2M6I*J0DK4JBJD)*Q:
  911. XMA:E!6K:G:IGZQ:AJJ*MJAJJ*MJE*N*M<..BJ;#FI;"44J6PD)*I<)"]*IL%"
  912. XM6J7`4TJEK2IT1*IJPJ=$6J6K*G54JTJRIT9*M:H:A&6K6H*G5TK$J!J$A:Q*
  913. XM8:A92M2D&I2@6N.A*I6A2O1RJTHEL8K%HTSTI%S5I5RUITRTJ%R5J5QUJUQ5
  914. XMK5PUKUP5L6O6LVNVM7MWMXLXNHKXO:"IH,"BH:+$M<BQS:O4H[=`$=H````W
  915. XM+"W[+!=1T^;V_3%U$(@,X````%`;8]Y(#K[>EX@-X0```%`;8]Y*[>DI<.#`
  916. XM.^(```!0'6/>2-Q-IME]B->-:=:=:=:=>->->=:=;YUIUOG6G6^M7ZU>*M7Z
  917. XMU;U>*M6]7ZU>2]6M7@++U<!)XP```%`=9?!*U>W[XM2]3[U:U;U:U:U:U:UI
  918. XMUIUIU:U:U9U9UIU*UGV5VWV:V9V)V9V*UZV)V)V)UZUZUZUZUKUJUOO6XKUN
  919. XMW[#(.>0```!0'6/>2N`LO6K6Y+UOK6O6XJUKUOK7XJU_K7^M>=CYV)V/G8G8
  920. XMG8C9C8G8G8G8G9C9C9?:;<2(#?````!0&V/N2`X.WI>2@`SQ````4!MC[DJ7
  921. XM[>#KR#GR````4!UC\$A-QMI]F-F-F=B=B=B=B-F-B=B=CYV)V/G8G7^M?ZU^
  922. XM*M?ZUKUN*M:];ZUN2]:M;@++R$GS````4!UEWDKM^];BO6^]:M:]:M>M>M>M
  923. XM>=B=B=BM>MB=F=B=FME]M=E]:M2=:=6=6M6M6=:=:=:M6M6M6M6]6M7[U.*]
  924. XM3M^]4,`[]````%`=8_!*U>`LO5K5Y+U?K5O5XJU;U?K5XJU?K5^M:=;YUIUO
  925. XMG6G6G7C7C7G6G6G6G6C7C8?9;:3<V`OU````4`MEWDH`19"8"O8```!I:`,`
  926. XM&P_@@&;[````:5PY^C2J3>]=U=UMU=U=UMU=U=UMQMQMQMQMS*G\R=SIO/F=
  927. XM"9?:C:C9C8D=>1U9/4E-:2V)39D]N1VY'<C=C<C=?=T)S/G,Z=S)_*H6WFWF
  928. XMWFWFWEWUWFWEWUWFWEW_7?2\V`O\````-RPM^RP`>^"`9OT```!I7#GZ-+Q-
  929. XM_UWUWFWEWUWFWEWUWFWFWFWFWFH<J?S)W.G,^<T-U]V-R-V-R1VY';D]F4V)
  930. XM+6E-23U9'7D=B-F-J-IYG0F<^;SIW,G\K<;<;<;<;<;=7=7=;=7=7=;=7=]=
  931. XBY*J0&_X```!214?Z1+<]?K5;?9$)4=FWZQ6WV1"5'9'U]M7=
  932. X`
  933. Xend
  934. END_OF_FILE
  935.   if test 14167 -ne `wc -c <'fonts.lj/S.24.pk.UU'`; then
  936.     echo shar: \"'fonts.lj/S.24.pk.UU'\" unpacked with wrong size!
  937.   fi
  938.   # end of 'fonts.lj/S.24.pk.UU'
  939. fi
  940. if test -f 'man/pk2sfp.1.S' -a "${1}" != "-c" ; then 
  941.   echo shar: Will not clobber existing file \"'man/pk2sfp.1.S'\"
  942. else
  943.   echo shar: Extracting \"'man/pk2sfp.1.S'\" \(15581 characters\)
  944.   sed "s/^X//" >'man/pk2sfp.1.S' <<'END_OF_FILE'
  945. X.\"Copyright 1988 by Chris Lewis 91/03/20
  946. X.TH PK2SFP %%MANEXT%% "Psroff %%T2VERSION%%"
  947. X.SH NAME
  948. Xpk2sfp,pk2ditwid,pktype,pk2ps \- PK/SFP format font file handling utilities
  949. X.SH SYNOPSIS
  950. X.B pk2sfp
  951. X.BI "[\-D" opts "]"
  952. X.BI "[" options "]"
  953. Xfonts ...
  954. X.sp
  955. X.B pk2sfp
  956. X.B \-m
  957. X.BI "[\-D" opts "]"
  958. X.BI "[" options "]"
  959. Xmap font map font ...
  960. X.sp
  961. X.B pk2ditwid
  962. X.BI "[\-D" opts "]"
  963. X.B "[\-S]"
  964. X.B "[\-s]"
  965. X.B "[\-A]"
  966. Xfiles...
  967. X.sp
  968. X.B pktype
  969. X.BI "[\-v]"
  970. X.BI "[\-f" char "]"
  971. X.BI "[\-l" char "]"
  972. X.BI "[\-D" opts "]"
  973. Xfiles...
  974. X.br
  975. X.B pk2ps
  976. X.B "[\-f]"
  977. X.B "[\-v]"
  978. X.BI "[\-D" opts "]"
  979. Xfiles...
  980. X.SH DESCRIPTION
  981. XThese programs allow you to manipulate PK and SFP format font files,
  982. Xwhich
  983. X.B psroff
  984. Xcan use with Hewlett Packard Laserjet (or compatible) printers.
  985. XThese programs are usually found in %%LIBDIR%%.
  986. X.SH "Converting SFP and PK files: pk2sfp"
  987. X.PP
  988. X.B pk2sfp
  989. Xreads each of its argument files, and converts them into HPLJ format
  990. Xfonts (HP SFP format), and outputs them to standard output sorted
  991. Xin ascending order of character code.
  992. XThe output does not normally contain "SET FONT ID" sequences.
  993. XThis is how HP distributes their fonts on floppies.
  994. X.PP
  995. X.B pk2sfp
  996. Xconcatenates all the conversions of the input files together on standard
  997. Xoutput.
  998. X.PP
  999. X.B pk2sfp
  1000. Xwith the
  1001. X.B "\-m"
  1002. Xoption allows you to merge font files, at the same time changing the
  1003. Xencoding.
  1004. XMost of the options for simple font conversions apply to
  1005. X.B pk2sfp
  1006. Xwith the
  1007. X.B "\-m"
  1008. Xoption, but merging is covered more completely in "Merging SFP and PK
  1009. Xfonts" below.
  1010. X.PP
  1011. X.B pk2sfp
  1012. Xcan read both PK and SFP format files (the latter effectively being a
  1013. X``no-op'' conversion - which can be useful for checking format validity
  1014. Xand changing header characteristics, see below).
  1015. X.PP
  1016. X.B pk2sfp
  1017. Xattempts to infer certain header characteristics by the basename
  1018. Xof the input font file name if the input font is PK format.
  1019. XThe
  1020. X.B psroff
  1021. Xnaming convention is:
  1022. X.BR path / troffname . pointsize . "[pk|sfp]"
  1023. X.PP
  1024. X.RS
  1025. X.nf
  1026. XAll ROMAN8 encodings unless MATH8.
  1027. XAll 0 strokeweight, unless Bold.
  1028. XAll upright, unless Italic
  1029. XAll Roman typeface, unless otherwise specified
  1030. X.ta 1i
  1031. X
  1032. XR    Normal Roman
  1033. XI    Italic
  1034. XB    Bold
  1035. XS    MATH8 Symbol
  1036. XX    Bold italic
  1037. X\&.X    <typeface> Bold italic
  1038. X\&.I    <typeface> Italic
  1039. X\&.B    <typeface> Bold
  1040. X\&.R    <typeface> Normal
  1041. XH or H.    Helvetica typeface
  1042. XC or C.    Courier typeface
  1043. X    typefaces should be extended.
  1044. X.DT
  1045. X.fi
  1046. X.RE
  1047. X.PP
  1048. X.B pk2sfp
  1049. Xwill pass through SFP characteristics unchanged, unless you change them
  1050. Xexplicitly (see below).
  1051. X.PP
  1052. X.SH "Additional options for pk2sfp"
  1053. X.PP
  1054. XThe
  1055. X.BI "\-s" na
  1056. Xoption will set the symbol set.
  1057. XEg:
  1058. X.B "\-s8U"
  1059. Xsets the symbol set to "ROMAN8".
  1060. X.PP
  1061. X.BI "\-t" "0|1"
  1062. Xsets the orientation to ``upright'' (0) or ``italic'' (%%MANEXT%%).
  1063. X.PP
  1064. X.BI "\-w" n
  1065. Xsets the stroke weight, 0 is normal, \-7 is very light and 7 is very
  1066. Xbold.
  1067. X-3 and 3 are traditional values.
  1068. X.PP
  1069. X.BI "\-f" n
  1070. Xsets the typeface to ``n''.
  1071. XFor example, Times Roman is ``5''.
  1072. X.PP
  1073. X.BI "\-i" n
  1074. Xcauses
  1075. X.B pk2sfp
  1076. Xto emit fontid sequences in front of each downloaded
  1077. Xfont, incrementing the id by one for each font, starting with number
  1078. X.IR n .
  1079. XFor compatibility with
  1080. X.B psroff
  1081. Xit is suggested that ``n'' be at least 1000.
  1082. X.PP
  1083. XSpecifying
  1084. X.B "\-v"
  1085. Xrequests pk2sfp to tell you what it's doing on stderr.
  1086. X.PP
  1087. XThe
  1088. X.B "\-S"
  1089. Xtells
  1090. X.B pk2sfp
  1091. Xthat it's dealing with a font intended for
  1092. X.BR psroff "'s"
  1093. XS font.
  1094. XThis has no effect unless
  1095. X.B "\-p"
  1096. Xis specified.
  1097. X.PP
  1098. XThe
  1099. X.B "\-p"
  1100. X("partial downloading") feature indicates to
  1101. X.B pk2sfp
  1102. Xthat the fonts are intended for use with
  1103. X.B psroff
  1104. Xand that characters that aren't used by
  1105. X.B psroff
  1106. X(eg: half of a ROMAN8 font isn't used) will be dropped from the
  1107. Xoutput font.
  1108. XThe font being read are assumed to be ROMAN8 fonts and the list of
  1109. Xvalid characters will correspond to the characters that
  1110. X.B psroff
  1111. Xneeds from ROMAN8 sets.
  1112. XSpecify
  1113. X.B "\-S"
  1114. Xtoo if you want to do this to MATH8 fonts which are intended for
  1115. Xthe characters that
  1116. X.B psroff
  1117. Xneeds from the MATH8 set.
  1118. X.PP
  1119. XThe
  1120. X.B "\-P"
  1121. Xoption tells pk2sfp to mark the fonts it downloads as permanent,
  1122. Xwhich means they are not cleared by a software reset, only explicit
  1123. Xdeletions or printer power-offs.
  1124. XThis option does not do anything unless
  1125. X.BI "\-i" n
  1126. Xspecified as well.
  1127. X.PP
  1128. XPlease note: the tables used to control
  1129. X.B "\-p"
  1130. Xare compiled into
  1131. X.BR pk2sfp .
  1132. XIf you change the character translations in lj.c or lj.fonts, you
  1133. Xwill have to rebuild
  1134. X.BR pk2sfp .
  1135. XThe partial option should not be used for auxiliary fonts (fonts
  1136. Xwhich supply characters not in ROMAN8 or MATH8).
  1137. XUse the
  1138. X.B "\-m"
  1139. X(merge) options for creating specialized reduced size font sets for
  1140. Xsuch fonts.
  1141. X.PP
  1142. XThe following example shows how you could preload your laserjet
  1143. Xwith fonts (in sizes 8, 9, 10, 11 and 12).
  1144. XThis demonstrates the use of
  1145. Xthe
  1146. X.BR \-p "," \-P ","
  1147. Xand
  1148. X.B \-S
  1149. Xoptions to use up as little Laserjet memory as possible.
  1150. X(These fonts should be marked ``b'' (builtin) in
  1151. X.IR lj.fonts ")."
  1152. X.PP
  1153. X.RS
  1154. X.nf
  1155. XF=%%LJF%%
  1156. Xpk2sfp \-pP \-i1000 $F/R.[89].pk $F/R.1[0\-2].pk | lp
  1157. Xpk2sfp \-SpP \-i1006 $F/S.[89].pk $F/S.1[0\-2].pk | lp
  1158. X.fi
  1159. X.RE
  1160. X.PP
  1161. XAll of the preceding options take place on all of the fonts specified in
  1162. Xthe command line.
  1163. XMost of the options perform no sanity checks on their arguments.
  1164. XThe reader is cautioned to read the HP manuals before attempting anything
  1165. Xfancy with options that affect header descriptors.
  1166. X.SH "Merging PK and SFP fonts: pk2sfp \-m"
  1167. X.PP
  1168. XThere are a wealth of fonts and font formats in the world.
  1169. XPerforming simple conversions between one format and the other would
  1170. Xlead to you having a considerably bigger repertoire of fonts.
  1171. XRight?
  1172. X.PP
  1173. XWell, not always.
  1174. XNot only to the formats change from one font format to another, but
  1175. X.B encodings
  1176. Xdo too.
  1177. XIf you simply converted Knuth's fonts in PK format to SFP and used them
  1178. Xon your Laserjet you're bound to be disappointed, because a character in
  1179. XKnuth's font isn't necessarily in the same place in standard SFP fonts.
  1180. XEg: If you used the hex code 0x7B to print a left brace-bracket (that's
  1181. Xwhat it is in ASCII and ROMAN8 fonts right?), you'd find that in Knuth's
  1182. XCMR font you'll get a "ff" ligature instead.
  1183. XWorse, other ASCII/ROMAN8 characters don't exist in CMR at all.
  1184. X.PP
  1185. XSo, font conversion often needs more than simple format translation
  1186. Xto work out the way you want.
  1187. X.PP
  1188. XThe
  1189. X.B "\-m"
  1190. Xoption to
  1191. X.B pk2sfp
  1192. Xis intended to do just that: take characters from a combination of
  1193. Xfonts, change encodings as necessary, and create one output font.
  1194. X.BR Psroff "'s"
  1195. XHP Laserjet S font is created in this way from four separate PK fonts.
  1196. X.PP
  1197. XThe
  1198. X.B "\-m"
  1199. Xoption to
  1200. X.B pk2sfp
  1201. Xindicates that preceding each font file specified a map file will be
  1202. Xgiven.
  1203. XEach font file will be appended together (with only one SFP header)
  1204. Xwith the translations specified by the map files and copied to
  1205. Xstandard output.
  1206. XAny character not mentioned in a map file is not copied.
  1207. XThe map file applies to the font files following until overridden
  1208. Xby the next map file.
  1209. XThe map file specifies the translations with lines of the following format:
  1210. X.PP
  1211. X.RS
  1212. X.nf
  1213. Xfrom  to  description
  1214. X.fi
  1215. X.RE
  1216. X.PP
  1217. X.I From
  1218. Xspecifies the character in the font file to be selected.
  1219. XAny character that doesn't match a ``from'' line will not be
  1220. Xcopied to the output.
  1221. X.I To
  1222. Xspecifies what character number the ``from'' character should be
  1223. Xchanged to.
  1224. XIf ``to'' is omitted, it is assumed to be the same as ``from''.
  1225. XThe description is free form text and is ignored.
  1226. XFrom, to and description are separated by white space.
  1227. XEmpty lines or lines beginning with "#" are comments.
  1228. X.PP
  1229. X``From'' and ``to'' can be specified in any of the following formats:
  1230. Xa single non-numeric character other than ``#'',
  1231. Xa decimal number starting with a non-zero digit,
  1232. Xan octal number consisting of a zero digit followed by numeric digits,
  1233. Xor hexadecimal consisting of a zero digit, followed by 'x' or 'X', followed
  1234. Xby digits and upper or lower case 'a' through 'f'.
  1235. XIf the ``to'' string is a single double quote ("), it is duplicated
  1236. Xfrom the ``from'' string.
  1237. XThe error checking isn't very exhaustive, so it is recommended that you
  1238. Xuse the
  1239. X.B \-v
  1240. Xoption to check things.
  1241. XThe
  1242. X.B \-v
  1243. Xoption will also give you a very verbose description of what characters
  1244. Xits translating and what characters it couldn't find.
  1245. X.PP
  1246. XThere are some examples of this in the source tree for
  1247. X.B psroff ,
  1248. Xthat generate a ROMAN8 and MATH8 SFP in 10 points.
  1249. XLook in utils/Makefile for ``testmerge'', utils/maps contains some
  1250. Xuseful translation maps, and utils/fonts contains a few PK files for
  1251. Xyour experimentation.
  1252. X.B Psroff
  1253. Xis shipped with PK format font files that were created by use of this
  1254. Xutility.
  1255. X.SH "Creating width tables: pk2ditwid"
  1256. X.PP
  1257. X.B pk2ditwid
  1258. Xis used to generate a ditroff format width table file (used by
  1259. X.B psroff
  1260. Xwidth table installation via
  1261. X.B gfnttab
  1262. Xand
  1263. X.BR dit2catwid )
  1264. Xfrom PK or SFP font files.
  1265. XThe output files are generated in the current directory with the
  1266. Xsame name as the basename of the input files, or with a ".WID"
  1267. Xsuffix if there was no previous suffix.
  1268. X.PP
  1269. XThe \-A option is special - it prints the widths and kerning
  1270. Xinformation of the characters without regard to ditroff encoding.
  1271. XThis is useful for generating width information for complete
  1272. Xfonts.
  1273. X.PP
  1274. XThe
  1275. X.B \-S
  1276. Xoption indicates to
  1277. X.B pk2ditwid
  1278. Xthat the font file is a
  1279. XPK or SFP used for the symbol font, otherwise
  1280. X.B pk2ditwid
  1281. Xassumes that it is a normal font.
  1282. X.PP
  1283. XThe
  1284. X.B \-s
  1285. Xoption tells
  1286. X.B pk2ditwid
  1287. Xto shut up and do the best it can.
  1288. XOrdinarily
  1289. X.B pk2ditwid
  1290. Xis extremely chatty about which characters it could find etc.,
  1291. Xwhich is rarely of major interest to the user.
  1292. XWhich is why
  1293. X.BR psroff "'s"
  1294. Xinstallation script puts
  1295. X.BR pk2ditwid "'s"
  1296. Xoutput in log files and makes no attempt to show them to the user.
  1297. X.PP
  1298. X.BR pk2ditwid "'s"
  1299. Xexact operation is somewhat bizarre, the following is a simplified
  1300. Xdescription:
  1301. X.PP
  1302. XNormally,
  1303. X.B psroff
  1304. Xworks with pure ROMAN8 and MATH8
  1305. Xencoded fonts for normal and symbol font sets respectively.
  1306. X(ROMAN8 and MATH8 are two of HP's standard "char-to-glyph" mapping tables).
  1307. XHowever,
  1308. XThe MATH8 and ROMAN8 encodings do not exactly reflect CAT
  1309. X.BI troff 's
  1310. Xdivisions of characters.
  1311. XIn
  1312. X.BR troff2ps 's
  1313. Xbackend drivers, there are tables that correspond to CAT normal and symbol,
  1314. Xwhich are indexed by CAT code to select which HP font and character sequence
  1315. Xshould be emitted by the backend to print a specific CAT character.
  1316. X.PP
  1317. XMost CAT codes are single HP characters, but a few are done by concatenation
  1318. X(for example \e(34 may be) or overstrike
  1319. X(\e(co may be).
  1320. X.PP
  1321. X.B pk2ditwid
  1322. Xuses the backend tables and reads each of the font files given as arguments.
  1323. XIt then generates a ditroff-like width table that contains width information
  1324. Xfor each sequence of HP characters needed to generate a CAT character.
  1325. XThe width tables are fairly simple, and contain three fields of principle
  1326. Xinterest:
  1327. X.PP
  1328. XColumn one is the CAT
  1329. X.B troff
  1330. Xcharacter name.
  1331. XSingle characters are themselves, dual characters are prefixed by "\e("
  1332. Xin
  1333. X.BR troff .
  1334. X.PP
  1335. XThe second column indicates the width of that character in 1/300th's of an
  1336. Xinch when the character is printed at 10 points.
  1337. X(Which are the default
  1338. X.BR gfnttab / dit2catwid
  1339. Xsettings)
  1340. X.PP
  1341. XThe third column is the kerning information, and is a number formed
  1342. Xby or'ing a 1 and/or 2 together.
  1343. XA ``1'' denotes an descender (eg: ``g''),
  1344. Xand a ``2'' denotes a character with an ascender (eg: ``k'').
  1345. X.PP
  1346. XPlease note this is only ditroff-\f3like\fP \(em the output is not
  1347. Xintended to go through real
  1348. X.B makedev
  1349. Xwhich will probably complain about multiple-character emit sequences and
  1350. Xmissing directives.
  1351. X.PP
  1352. XThe wierdness comes from the fact that it's possible to override the
  1353. XCAT character to HP sequence translation by adding directives to the
  1354. X.I lj.fonts
  1355. Xfile but the sequences are built-in (so I'm lazy...) to
  1356. X.BR pk2ditwid .
  1357. XIf you choose to add in translation overrides to
  1358. X.IR lj.fonts ,
  1359. Xyou will have to recompile
  1360. X.B pk2ditwid
  1361. Xand rerun the width table build and install procedures
  1362. Xto recompute and install the new width tables.
  1363. XThe Makefile uses the
  1364. X.B troff2ps
  1365. Xbinary to generate a compileable table of translation sequences, using
  1366. Xboth the built-in backend map plus the
  1367. X.I lj.fonts
  1368. Xoverride you've specified,
  1369. Xplus the mkenctab shell script to generate the pk2ditwid tables.
  1370. XThis is so durn complicated, that I simply automated it all:
  1371. Xin the
  1372. X.B psroff
  1373. Xsource directory area, change
  1374. X.B lib/lj.fonts
  1375. Xto reflect the translations you need,
  1376. Xand rebuild and reinstall
  1377. X.BR psroff .
  1378. X.PP
  1379. XIf you're just adding new fonts to
  1380. X.BR psroff 's
  1381. Xrepertoire, this isn't all necessary, just install the fonts into
  1382. X%%LJF%% (using the proper naming convention),
  1383. Xupdate
  1384. X.IR lj.fonts ,
  1385. Xand go into the widths source directory and type ``make ljwidths widths''
  1386. Xthen su to root and ``make installwidths''.
  1387. X.PP
  1388. X.B pk2ditwid
  1389. Xneed only be run on one font in each family, and by default, the build
  1390. Xprocedure runs
  1391. X.B pk2ditwid
  1392. Xonce each font (in the size closest to 10) that it finds in the
  1393. X%%LJF%% directory.
  1394. X.SH "Examining PK and SFP font files: pktype"
  1395. X.PP
  1396. X.B pktype
  1397. Xreads PK and SFP format files and generates files suffixed with ".D"
  1398. Xwhich contain a description of the font and each character.
  1399. XIf the
  1400. X.B "\-v"
  1401. Xoption is specified, an approximation of the character image is displayed
  1402. Xtoo.
  1403. XThe
  1404. X.BI "\-f" char
  1405. Xand
  1406. X.BI "\-l" char
  1407. Xoptions allow you to specify a range of characters to print, where
  1408. Xthe
  1409. X.B \-f
  1410. Xspecifies the first character, and
  1411. X.B \-l
  1412. Xspecifies the last character.
  1413. X.SH "Displaying PK and SFP font files: pk2ps"
  1414. X.PP
  1415. X.B pk2ps
  1416. Xtakes each of the specified files and generates bitmap Postscript
  1417. Xfonts and appends to each commands to draw a table.
  1418. XThe table contains each character in the font, and below it are
  1419. Xdecimal, hexidecimal and octal numbers representing the character code.
  1420. XThe output of
  1421. X.B pk2ps
  1422. Xis on standard output.
  1423. X.PP
  1424. XThe
  1425. X.B \-f
  1426. Xoption causes
  1427. X.B pk2ps
  1428. Xto omit the table printing commands and some of the extra Postscript, leaving
  1429. Xonly the Postscript font definition.
  1430. XThe resultant output can then be used as a Postscript font (via inclusion
  1431. Xin ps.lib etc.).
  1432. XThe font is named for the basename of the filename.
  1433. X``<path>/cmr10.358pk'' will be called ``cmr10''.
  1434. XThe font is supposedly properly scaled, so Postscript ``scalefont'' will
  1435. Xwork normally and generate the size font you expect.
  1436. XWarning: this uses bitmapped fonts: displaying these characters at
  1437. Xconsiderably
  1438. Xlarger sizes or at odd multiples of the ``true'' size (the size of the
  1439. Xexample is actually 10 * 358 / 300) may lead to some objectionable
  1440. Xjaggies.
  1441. X.PP
  1442. XIn all four utilities, the
  1443. X.BI "\-D" opts
  1444. Xoption allows you to turn on debugging.
  1445. XSee
  1446. X.BR troff2ps (1)
  1447. Xfor further information.
  1448. XNote: if DEBUG compiled out, this will not be available.
  1449. X.SH FILES
  1450. X.if t .ta 2.5i
  1451. X.if n .ta 3.5i
  1452. X%%LJF%%    troff2ps LJ font directory.
  1453. X.br
  1454. X%%LIBDIR%%/lib/lj.fonts    LJ font definitions and translation overrides.
  1455. X    not read by pk2sfp/pktype/pk2ditwid
  1456. X.SH "BUGS"
  1457. X.B pk2sfp
  1458. Xshould really have multiple output files when requested by an option.
  1459. X.B pk2ditwid
  1460. Xand
  1461. X.B pk2sfp
  1462. Xshould be able to read the
  1463. X.I lj.fonts
  1464. Xfile instead of being recompiled.
  1465. X.B pk2ditwid
  1466. Xonly understands backspace or character concatenation sequences
  1467. X(eg: "a\010b" or "ab"),
  1468. Xany translation that contains any other escape sequence will not be
  1469. Xparsed properly and may generate bizarre widths, though it will
  1470. Xbe moderately sane if all of the characters in the escape sequence
  1471. Xare nonprintable (or not in the font file).
  1472. XSuch escape sequences may also affect operation of
  1473. X.B pk2sfp "'s"
  1474. Xpartial downloading feature (by including characters that you don't
  1475. Xreally need - which is harmless).
  1476. X.SH "SEE ALSO"
  1477. Xtroff2ps(%%MANEXT%%), \fIlj.fonts\fP,
  1478. XHewlett Packard's HP Laserjet Reference Manuals.
  1479. X.SH AUTHOR
  1480. XWritten by Chris Lewis
  1481. END_OF_FILE
  1482.   if test 15581 -ne `wc -c <'man/pk2sfp.1.S'`; then
  1483.     echo shar: \"'man/pk2sfp.1.S'\" unpacked with wrong size!
  1484.   fi
  1485.   # end of 'man/pk2sfp.1.S'
  1486. fi
  1487. echo shar: End of archive 6 \(of 19\).
  1488. cp /dev/null ark6isdone
  1489. MISSING=""
  1490. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ; do
  1491.     if test ! -f ark${I}isdone ; then
  1492.     MISSING="${MISSING} ${I}"
  1493.     fi
  1494. done
  1495. if test "${MISSING}" = "" ; then
  1496.     echo You have unpacked all 19 archives.
  1497.     echo "Read the README to get started with psroff installation"
  1498.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1499. else
  1500.     echo You still must unpack the following archives:
  1501.     echo "        " ${MISSING}
  1502. fi
  1503. exit 0
  1504.  
  1505. exit 0 # Just in case...
  1506.